2012-07-03 135 views
1

可能重复:
Python : how to append new elements in a list of list?Python中填充一个二维表(或阵列)的所有元素,当我改变只是一个

我想出了这个奇怪的(对我来说)在Python中的行为。

我有一个空的2D列表(或者你喜欢的数组),当我向其中一列添加一个元素时,所有其他列都会得到相同的值。

下面是代码:

row = [1, 2, 3, 4] 
yChannel = 4*[[]] 

sectorPlace = 0 
for sector in yChannel: 
    sector.append(row[sectorPlace]) 
    sectorPlace += 1 

print yChannel 

和输出:

[[1,2,3,4],[1,2,3,4],[1, 1,2,3,4],[1,2,3,4]]

+1

这是python中最常见的疑问之一:请参阅

回答

3

线

yChannel = 4*[[]] 

创建了四次相同的列表对象的列表。修改这个单独的列表对象看起来会修改所有子列表,因为它们实际上是全部相同的列表对象。您应该使用

yChannel = [[] for dummy in range(4)] 

创建四个独立子列表清单。

+0

谢谢,那很容易。问题解决了。只要stackoverflow的系统允许,我会尽快给你答复。 – jbssm

4

yChannel包含4份相同的列表。比较你有什么:

yChannel = [[], [], [], []] 
+0

我明白了,我如何初始化它以便列表不一样? – jbssm

+1

@jbssm:这样,四个列表被初始化为四个独立列表。这与范围(4)中的虚拟[[]]相同。 –

+0

@Ali:谢谢。实际上我需要一个可变数量的列表,但我理解你的观点。 – jbssm

相关问题