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))
推荐阅读
- Python有什么方法将列表分割成大小均匀的块(求使用实例)
- 不明白Python的切片符号,如何更好地理解Python的切片()
- 前端开发JavaScript常见开发问题和面试题汇总(问题+答案详解)
- C语言简明教程(三)(GNU GCC、LLVM Clang和开发环境部署)
- 看门狗(军团)
- 后记 – 看门狗2
- jQuery 奇数选择器:odd用法示例
- FScan磁盘调度算法简介
- PHP | SplFixedArray current()函数用法介绍