Python如何复制或克隆一个list列表(有哪些方式?求详细解释和实例)

Python如何复制或克隆一个list列表?求详细解释和实例,用Python克隆或复制list有哪些方式?而简单地使用new_list = my_list,对new_list的任何更改都会修改my_list,这是为什么?
对于new_list = my_list,实际上没有两个列表,赋值只是将引用复制到列表,而不是实际的列表,因此new_list和my_list在赋值之后都引用同一个列表。
为了实际复制list,你可以使用下面的方式:
方式一:你可以使用内建的list.copy函数(python3.3开始)

new_list = old_list.copy()

方式二:使用切片
new_list = old_list[:]

方式三:你可以使用内建的list()函数
new_list = list(old_list)

方式四:可以使用copy.copy()
import copy new_list = copy.copy(old_list)

这种方式比list()稍微慢一些,因为它必须首先找到old_list的数据类型。
方式五:如果列表中包含对象,并且需要复制它们,那么可以使用copy.deepcopy()
import copy new_list = copy.deepcopy(old_list)

很显示这种方式最慢、最费内存,但是有时这是不可避免的。
【Python如何复制或克隆一个list列表(有哪些方式?求详细解释和实例)】复制或克隆一个list列表实例:
import copyclass Foo(object): def __init__(self, val): self.val = valdef __repr__(self): return str(self.val)foo = Foo(1)a = ['foo', foo] b = a.copy() c = a[:] d = list(a) e = copy.copy(a) f = copy.deepcopy(a)# edit orignal list and instance a.append('baz') foo.val = 5print('original: %r\n list.copy(): %r\n slice: %r\n list(): %r\n copy: %r\n deepcopy: %r' % (a, b, c, d, e, f))

    推荐阅读