我很难理解一段python代码的输出。
mani=[]
nima=[]
for i in range(3)
nima.append(i)
mani.append(nima)
print(mani)
输出为
[[0,1,2], [0,1,2], [0,1,2]]
我无论如何也不明白为什么不是
[[0], [0,1], [0,1,2]]
如有帮助,不胜感激。
因为当你把“尼玛”附加到“摩尼”中时,它不是“尼玛”的复制品,而是对“尼玛”的引用。
因此,当尼玛发生变化时,在mani中的每个位置处的引用都指向了变化后的尼玛。
由于nima以[0,1,2]结尾,所以附加到mani中的每个引用都只引用相同的对象。
正如一些人建议的那样,要完成此操作,您应该使用copy
模块。 您的代码如下所示:
import copy
mani=[]
nima=[]
for i in range(3):
nima.append(i)
mani.append(copy.copy(nima))
print(mani)
输出:
[[0], [0, 1], [0, 1, 2]]