【问题标题】:Deep copy of sublists [duplicate]子列表的深拷贝[重复]
【发布时间】: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


【解决方案1】:

你不能使用*;使用另一个列表推导。

a = [a[0][:] for _ in range(3)] + a[1:]

【讨论】:

    猜你喜欢
    • 2011-02-09
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 2016-05-07
    • 2011-03-24
    • 2013-03-12
    • 2014-05-25
    • 1970-01-01
    相关资源
    最近更新 更多