为什么foo.append(bar)影响列表列表中的所有元素?

为什么foo.append(bar)影响列表列表中的所有元素?,第1张

为什么foo.append(bar)影响列表列表中的所有元素?

这是因为该列表包含对象的引用。您的清单不包含

[[1 2 3] [1 2 3]]
,而是
[<reference to b> <reference tob>]

更改对象时(通过向追加内容

b
),您更改的是对象本身,而不是包含对象的列表。

为了获得想要的效果,您的列表

a
必须包含的副本,
b
而不是的引用
b
。要复制列表,您可以使用range
[:]
。例如, :

>>> a=[]>>> b=[1]>>> a.append(b[:])>>> a.append(b[:])>>> a[0].append(2)>>> a[1].append(3)>>> print a[[1, 2], [1, 3]]


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5662688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存