【问题标题】:Python: swap list elements in a copied list without affecting the original listPython:在复制列表中交换列表元素而不影响原始列表
【发布时间】:2011-12-16 22:26:05
【问题描述】:

我有一个列表 a 和一个列表 b,它是(应该是)列表 a 的副本。

a = [[['a'], ['b'], ['c']], [['A'], ['B'], ['C']]]
b = a[:][:]
b[0][1], b[0][2] = b[0][2], b[0][1]

如果我现在查看ab,我会得到以下信息:

a = [[['a'], ['c'], ['b']], [['A'], ['B'], ['C']]]
b = [[['a'], ['c'], ['b']], [['A'], ['B'], ['C']]]

为什么换入列表b也会影响原列表a

谢谢。

【问题讨论】:

标签: python list multidimensional-array


【解决方案1】:

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)

【讨论】:

    【解决方案2】:
    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-13
      • 2022-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多