3 回答
TA贡献1828条经验 获得超13个赞
E0_copy
list()
list(...)
testList[:]
copy.deepcopy(...)
deepcopy(x, memo=None, _nil=[])
Deep copy operation on arbitrary Python objects.
见以下片段-
>>> a = [[1, 2, 3], [4, 5, 6]]
>>> b = list(a)
>>> a
[[1, 2, 3], [4, 5, 6]]
>>> b
[[1, 2, 3], [4, 5, 6]]
>>> a[0][1] = 10
>>> a
[[1, 10, 3], [4, 5, 6]]
>>> b # b changes too -> Not a deepcopy.
[[1, 10, 3], [4, 5, 6]]
现在看deepcopy操作
>>> import copy
>>> b = copy.deepcopy(a)
>>> a
[[1, 10, 3], [4, 5, 6]]
>>> b
[[1, 10, 3], [4, 5, 6]]
>>> a[0][1] = 9
>>> a
[[1, 9, 3], [4, 5, 6]]
>>> b # b doesn't change -> Deep Copy
[[1, 10, 3], [4, 5, 6]]
TA贡献1818条经验 获得超11个赞
import copy copy.copy()copy.deepcopy()
# think of it likenewList = [elem for elem in oldlist]
但这是错误的!
a = [1,2]b = [a,a] # there's only 1 object ac = deepcopy(b)# check the resultc[0] is a # return False, a new object a' is createdc[0] is c[1] # return True, c is [a',a'] not [a',a'']
TA贡献1812条经验 获得超5个赞
new_list = [i for i in old_list]
new_grid = [[i for i in row] for row in grid]
添加回答
举报