您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python按值列出,而不按引用列出

python按值列出,而不按引用列出

b = a[:]

要复制列表,可以使用list(a)a[:]在这两种情况下,都会创建一个新对象。 但是,这两种方法在可变对象的集合方面存在局限性,因为内部对象保持它们的引用完整无缺:

>>> a = [[1,2],[3],[4]]

>>> b = a[:]
>>> c = list(a)

>>> c[0].append(9)

>>> a
[[1, 2, 9], [3], [4]]
>>> c
[[1, 2, 9], [3], [4]]
>>> b
[[1, 2, 9], [3], [4]]
>>> 

如果你想要对象的完整副本,则需要copy.deepcopy

>>> from copy import deepcopy
>>> a = [[1,2],[3],[4]]

>>> b = a[:]
>>> c = deepcopy(a)

>>> c[0].append(9)

>>> a
[[1, 2], [3], [4]]
>>> b
[[1, 2], [3], [4]]
>>> c
[[1, 2, 9], [3], [4]]
>>> 
python 2022/1/1 18:17:07 有496人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶