个性化阅读
专注于IT技术分析

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)

很显示这种方式最慢、最费内存,但是有时这是不可避免的。

复制或克隆一个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))
赞(0)
未经允许不得转载:srcmini » Python如何复制或克隆一个list列表?有哪些方式?求详细解释和实例

评论 抢沙发

评论前必须登录!