【问题标题】:How do I store a variable's value in a list instead of a reference?如何将变量的值存储在列表中而不是引用中?
【发布时间】:2013-10-25 04:36:17
【问题描述】:
a = ['a']
b = ['b']
c = a
ab = [a,b]

print(c)
print(ab)

a[0] = 'c'

print(c)
print(ab)

返回:

['a']              
[['a'], ['b']]
['c']
[['c'], ['b']]

我希望 c 列表保持原样,即 ['a']。但是在我更改了 a 列表中的元素后,它发生了变化。为什么会发生这种情况,如果有的话,我该如何避免。

【问题讨论】:

  • 这看起来像 Python。如果是这样,请将a 列表的副本存储在c 中,而不是引用:c = a[:]
  • 是的,抱歉,忘记指明是python!这很好用,我不熟悉区别。
  • 有关复制/克隆列表的各种选项,请参阅stackoverflow.com/a/2612815/2530083

标签: python list variable-assignment


【解决方案1】:

您需要复制列表a 并将其分配给c。现在你只是将a 的引用分配给c,这就是为什么当你修改a 时你也会修改c。复制a有多种方式,我认为最容易阅读的使用列表构造函数:

c = list(a)

【讨论】:

    【解决方案2】:

    Alek 或 mtitan8 的解决方案可能是最方便的。要非常明确,您可以import copy 然后使用c = copy.copy(a)

    【讨论】:

      猜你喜欢
      • 2017-04-26
      • 1970-01-01
      • 2020-08-28
      • 2021-11-06
      • 1970-01-01
      • 2015-04-07
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      相关资源
      最近更新 更多