【问题标题】:Python: How to store mutable variables like sets?Python:如何存储可变变量,如集合?
【发布时间】:2016-01-25 19:23:35
【问题描述】:

我想存储一个集合,然后就地删除一些元素,例如:

>>> A = set({1,2,3})
>>> B = A
>>> A.remove(3)

但是B 也发生了变化:

>>> B 
set([1, 2])

有没有办法存储A 并且不使用不更改B

>>> A = A - {3}

【问题讨论】:

标签: python variables set


【解决方案1】:

所以你需要这样写:

A = {1,2,3}
B = A.copy()
A.remove(3)
print(B)

打印:

{1, 2, 3}

【讨论】:

  • 你也可以做B = A.copy() 这个方法存在于set 并且还提供了一个没有导入的deepcopy
  • 在这种情况下,copy.deepcopy() 不需要,copy.copy() 就足够了。
  • @sedavidw: set.copy() 是浅拷贝,不是深拷贝。
  • 你说得对,它是浅拷贝,但这里浅拷贝其实还可以,我的评论打错了
【解决方案2】:

您要查找的函数是来自copydeepcopy

>>> from copy import deepcopy
>>> A = set({1,2,3})
>>> B = deepcopy(A)
>>> A.remove(3)
>>> A
set([1, 2])
>>> B
set([1, 2, 3])

【讨论】:

    【解决方案3】:

    需要用到copy,set是不可变对象的集合,set的元素不能原地改变,所以不需要深拷贝。

    a = set({1,2,3})
    b = a.copy()
    a.remove(1)
    >>> a
    set([2, 3])
    >>> b
    set([1, 2, 3])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-24
      • 1970-01-01
      • 2014-05-10
      • 2017-06-17
      • 2021-04-05
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      相关资源
      最近更新 更多