列表切片与复制

难道蟒蛇copy行动一样做L[:]或不L[:]更像deepcopy或者其他什么东西?只是一个基本的例子是:

from copy import copy
L = [1,2,3]
L[:]
# [1,2,3]
copy(L)
# [1,2,3]

回答

L.copy()并且L[:]工作相同 - 两者都是浅拷贝。起初只L[:]存在;.copy()是后来添加的,以便需要副本的通用代码可以以不规则的方式拼写它 ( dict.copy(), set.copy(), ...)。

例子

>>> L = [[1, 2], [3, 4]]
>>> L1 = L[:]
>>> [a is b for a, b in zip(L, L1)]
[True, True]
>>> L1 = L.copy()
>>> [a is b for a, b in zip(L, L1)]
[True, True]
>>> import copy
>>> L1 = copy.copy(L)
>>> [a is b for a, b in zip(L, L1)]
[True, True]
>>> L1 = copy.deepcopy(L) # this one differs!
>>> [a is b for a, b in zip(L, L1)]
[False, False]


以上是列表切片与复制的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>