我来过这个问题。代码:
>>> values = [0, 1, 2]
>>> values[1] = values
>>> values
[0, [...], 2]
我期望的结果是:
[0, [0, 1, 2], 2]
这是对 python 列表的无限赋值吗?幕后是什么?
谢谢。
你有一个递归列表。values[1]
是对 的引用values
。如果要存储values
需要复制的值,最简单的方法是
values[1] = values[:]
您将与第二个元素相同的列表放入其自身。所以内部列表的第二个元素又是它自己。
您需要复制初始列表以避免递归:
>>> values[1] = values[:]
你需要复制它:
values[1] = values[:]
>>> values = [0, 1, 2]
>>> values[1] = values
你说的values[1]
是values
, 也就是[0, 1, 2]
,values
代替 1, 现在values
是[0, 1, 2]
,values
代替 1, [0, 1, 2]
,values
代替 1, [0, 1, 2]
,values
代替 1, [0, 1, 2]
,values
代替 1, [0, 1, 2]
,values
代替 1 ... 。 …………