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)
很显示这种方式最慢、最费内存,但是有时这是不可避免的。
复制或克隆一个list列表实例:
import copy
class Foo(object):
def __init__(self, val):
self.val = val
def __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 = 5
print('original: %r\n list.copy(): %r\n slice: %r\n list(): %r\n copy: %r\n deepcopy: %r'
% (a, b, c, d, e, f))
评论前必须登录!
注册