【发布时间】:2019-12-05 00:03:52
【问题描述】:
我有一个深度列表a=[[1, 2], 3],我想多次复制列表的第一个条目(子列表)以获得[[1, 2], [1, 2], [1, 2], 3]。
以下作品:
a=[[1, 2], 3, 4]
for _ in range(2):
a = [a[0][:]] + a
print(a) # [[1, 2], [1, 2], [1, 2], 3, 4]
a[0][0] = 5
print(a) # [[5, 2], [1, 2], [1, 2], 3, 4]
在进行列表理解时,我只创建浅拷贝:
a=[[1, 2], 3, 4]
a = [a[0][:]] * (3) + a[1:]
print(a) # [[1, 2], [1, 2], [1, 2], 3, 4]
a[0][0] = 5
print(a) # [[5, 2], [5, 2], [5, 2], 3, 4]
问题:如何以 Python 方式创建子列表的深层副本?
【问题讨论】:
-
copy.deepcopy(a) -
你认为 "pythonic" 的方式是什么?
-
pythonic 我的意思是不使用循环:-)
标签: python