1

可能重复:
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, 2, 3, 4], [1, 2, 3, 4]]

4

2 回答 2

4

yChannel包含相同列表的 4 个副本。比较你所拥有的:

yChannel = [[], [], [], []]
于 2012-07-03T15:40:09.157 回答
3

线

yChannel = 4*[[]]

创建一个具有四倍相同列表对象的列表。修改这个单个列表对象似乎会修改所有子列表,因为它们实际上都是相同的列表对象。你应该使用

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

创建一个包含四个独立子列表的列表。

于 2012-07-03T15:41:14.920 回答