找到列表列表中的第一项[重复]

问题描述 投票:0回答:2

我有这样的场景:

>>> y=[[1]]
>>> y=y*2
>>> y
[[1], [1]]
>>> y[0].append(2)
>>> y
[[1, 2], [1, 2]]

我想做的是将 2 添加到外部列表中的第一个列表中,即这是所需的输出:

[[1, 2], [1]]
python list
2个回答
1
投票

正在做:

y=[[1]]
y=y*2

创建一个列表,其中包含对同一列表对象的两个引用:

>>> y=[[1]]
>>> y=y*2
>>> id(y[0])  # The id of the first element...
28864920
>>> id(y[1])  # ...is the same as the id of the second.
28864920
>>>

这意味着,当您修改其中一个时,另一个也会受到影响。


要解决此问题,您可以使用 列表理解 来代替:

>>> y = [[1] for _ in xrange(2)]  # Use range here if you are on Python 3.x
>>> y
[[1], [1]]
>>> id(y[0])  # The id of the first element...
28864920
>>> id(y[1])  # ...is different from the id of the second.
28865520
>>> y[0].append(2)
>>> y
[[1, 2], [1]]
>>>

0
投票

y=y*2 替换为 y.append([1]) 以获得不同的引用。

© www.soinside.com 2019 - 2024. All rights reserved.