提问者:小点点

列表理解更改列表元素


我想用列表理解来修改列表元素。

z=[1,2,3]
z=[z[i]=1 for i in range(len(z))]

我想要得到

z=[1,1,1]

但不管用。


共3个答案

匿名用户

如果你想把一个列表的所有变量都改成相同的数字,使用列表理解--你基本上是在创建一个新的列表。。。 所以如果这是你的意图,应该是这样的:

z = [1,2,3]
z = [1 for x in z]

输出:

[1,1,1]

匿名用户

我想用列表理解来修改列表元素。

>>> z = [1,2,3]

>>> id(z)
139881702963336

>>> _ = [z.__setitem__(i, 1) for i in range(len(z))]

>>> z
[1, 1, 1]

>>> id(z)
139881702963336

这将修改现有列表,而不是创建一个新列表。 当然,可以简单地忽略列表理解返回的none值列表。 上面将它分配给一个虚拟变量,只是为了防止它在交互会话中被回显。

匿名用户

使用以下理解:z=[z[0]for_in z]

这将创建一个与旧列表长度相同的新列表,并且只包含旧列表的第一个元素。