Python:替换列表列表中的元素(#2)
上一个与我的标题相同的问题已发布 ,(我认为)有同样的问题,但代码中有其他问题。我无法确定那个案例是否与我的相同。
无论如何,我想替换列表中列表中的元素。 代码:
myNestedList = [[0,0]]*4 # [[0, 0], [0, 0], [0, 0], [0, 0]]
myNestedList[1][1] = 5
我现在期望:
[[0, 0], [0, 5], [0, 0], [0, 0]]
但我得到:
[[0, 5], [0, 5], [0, 5], [0, 5]]
为什么?
这在命令行中复制。 Python 3.1.2(r312:79147,2010 年 4 月 15 日,15:35:48) [GCC 4.4.3] 在 linux2 上
A previous question with the same title as mine has been posted, with (I think) the same question, but had other problems in the code. I was not able to determine if that case was identical to mine or not.
Anyway, I want to replace an element within a list in a list.
Code:
myNestedList = [[0,0]]*4 # [[0, 0], [0, 0], [0, 0], [0, 0]]
myNestedList[1][1] = 5
I now expect:
[[0, 0], [0, 5], [0, 0], [0, 0]]
But I get:
[[0, 5], [0, 5], [0, 5], [0, 5]]
Why?
This is replicated in the command line.
Python 3.1.2 (r312:79147, Apr 15 2010, 15:35:48)
[GCC 4.4.3] on linux2
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您通过 * 4 对同一对象有四个引用,请使用带有范围的列表理解来进行计数:
为了更具体地解释问题:
You are having four references to same object by * 4, use instead list comprehension with range for counting:
To explain little more concretely the problem: