首页 >后端开发 >Python教程 >如何创建 Python 列表的真正独立副本?

如何创建 Python 列表的真正独立副本?

Patricia Arquette
Patricia Arquette原创
2024-12-25 00:57:17407浏览

How to Create Truly Independent Copies of Python Lists?

创建不可修改的 Python 列表克隆

将 new_list 分配给 my_list 时,它不是实际的单独列表创建。相反,它只是指向同一个列表的引用,导致 new_list 中的任何更改都会反映在 my_list 中。

有效复制列表

为了避免意外的列表修改,列表克隆有多种方法:

  • list.copy()方法:(Python 3.3):
new_list = old_list.copy()
  • 切片:
new_list = old_list[:]
  • 列表()构造函数:
new_list = list(old_list)
  • copy.copy() 函数:
import copy
new_list = copy.copy(old_list)
  • copy.deepcopy() 功能: (复制嵌套元素递归)
import copy
new_list = copy.deepcopy(old_list)

示例:

class Foo:
    def __init__(self, val):
        self.val = val

foo = Foo(1)

a = ['foo', foo]
b = a.copy()
c = a[:]
d = list(a)
e = copy.copy(a)
f = copy.deepcopy(a)

a.append('baz')
foo.val = 5

print(f'original: {a}\nlist.copy(): {b}\nslice: {c}\nlist(): {d}\ncopy: {e}\ndeepcopy: {f}')

输出:

original: ['foo', Foo(5), 'baz']
list.copy(): ['foo', Foo(5)]
slice: ['foo', Foo(5)]
list(): ['foo', Foo(5)]
copy: ['foo', Foo(5)]
deepcopy: ['foo', Foo(1)]

以上是如何创建 Python 列表的真正独立副本?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn