python 复制列表的不同方法

import copy
a = [[10], 20]
b = a[:]
c = list(a)
d = a * 1
e = copy.copy(a)
f = copy.deepcopy(a)
a.append(21)
a[0].append(11)
print id(a), a
30553152 [[10, 11], 20, 21]
print id(b), b
44969816 [[10, 11], 20]
print id(c), c
44855664 [[10, 11], 20]
print id(d), d
44971832 [[10, 11], 20]
print id(e), e
44833088 [[10, 11], 20]
print id(f), f
44834648 [[10], 20]

使用 a[:], list(a), a*1, copy.copy(a)四种方式复制列表结果都可以得到一个新的列表,但是如果列表中含有列表,所有b, c, d, e四个新列表的子列表都是指引到同一个对象上。只有使用copy.deepcopy(a)方法得到的新列表f才是包括子列表在内的完全复制。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页