1

可能重复:
Python 列表混淆

这是一个关于 python 列表的问题。(我的编程环境是带有python的SL4A)

我想要一个输入数字“n”的列表。

[ ['a'] , [] , [] , [] ] # (this example is the list when n =4)    <- the list I want

所以,我在下面写了一个源代码。

n = input()
array = [[]]*n
array[0].append('a')
print array

但是,我不能得到上面的输出,但也能得到一个列表......

[ ['a'], ['a'], ['a'], ['a'] ] #  <- wrong list

所以,我有两个问题。

  1. 请告诉我一个源代码,它给我一个我想要的列表。
  2. 为什么源代码给了我错误的列表?
4

3 回答 3

3

你应该使用

array = [[] for x in range(n)]

否则,您将获得 4 个对同一列表的引用

于 2012-11-19T12:37:13.657 回答
0

当你这样做

array = [[]]*n

您将获得一个包含 n 个相同链接的列表。这就是为什么当您编辑其中一个元素时,您会编辑每个元素。要摆脱这个,只需使用类似这样的东西

for i in range(0, 4):
    array1.append([])
    array2+=[]
于 2012-11-19T12:44:44.543 回答
0

蟒蛇3.2:

n = input()
array = [[] for i in range(n)]
array[0].append('a')
print array
于 2012-11-19T13:23:22.913 回答