我有一个列表a
和一个列表b
,它应该是(应该是)列表a
的副本。
a = [[['a'], ['b'], ['c']], [['A'], ['B'], ['C']]]
b = a[:][:]
b[0][1], b[0][2] = b[0][2], b[0][1]
如果我现在查看a
和b
,我会收到以下信息:
a = [[['a'], ['c'], ['b']], [['A'], ['B'], ['C']]]
b = [[['a'], ['c'], ['b']], [['A'], ['B'], ['C']]]
为什么列表b
中的交换也会影响原始列表a
?
谢谢。
答案 0 :(得分:3)
b = a[:][:]
只是b = (a[:])[:]
或原始列表副本的副本。原始列表中的列表仍然被引用,当您更改它们时,它会显示在两个列表中。
你可以做到
b = [l[:] for l in a] # a new list, consisting of copies each sublist
或
from copy import deepcopy
b = deepcopy(a)
答案 1 :(得分:0)
import copy
a = [[['a'], ['b'], ['c']], [['A'], ['B'], ['C']]]
b = copy.deepcopy(a)
b[0][1], b[0][2] = b[0][2], b[0][1]
print a, b