可能重复:
Python列表追加行为
我打算初始化长度为n的列表.
x = [[]] * n
Run Code Online (Sandbox Code Playgroud)
但是,这会以某种方式将列表链接在一起.
>>> x = [[]] * 3
>>> x[1].append(0)
>>> x
[[0], [0], [0]]
Run Code Online (Sandbox Code Playgroud)
我希望有类似的东西:
[[], [0], []]
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
所以我想知道如何最好地创建一个空白列表列表:
[[],[],[]...]
Run Code Online (Sandbox Code Playgroud)
由于Python如何使用内存中的列表,这不起作用:
[[]]*n
Run Code Online (Sandbox Code Playgroud)
这确实创建[[],[],...]但每个元素都是相同的列表:
d = [[]]*n
d[0].append(1)
#[[1],[1],...]
Run Code Online (Sandbox Code Playgroud)
像列表理解这样的东西:
d = [[] for x in xrange(0,n)]
Run Code Online (Sandbox Code Playgroud)
但是这使用Python VM进行循环.有没有办法使用隐含循环(利用它用C语言编写)?
d = []
map(lambda n: d.append([]),xrange(0,10))
Run Code Online (Sandbox Code Playgroud)
这实际上比较慢.:(