以下是显示使用 copy()功能的代码。
s = set([1, 2, 3, 4, 5])
t = s.copy()
g = s
print s == t #Output: True
print s == g #Output: True
当我们可以简单地在g中分配s的值时, copy()函数的用途是什么?
为什么我们有一个单独的功能('复制')来完成这项任务?
答案 0 :(得分:4)
通过修改g来继续你的例子:s会改变,但是不会。
>>> g.add(4)
>>> g
set([1, 2, 3, 4])
>>> s
set([1, 2, 3, 4])
>>> t
set([1, 2, 3])
答案 1 :(得分:3)
因为这两个作业不是做同样的事情:
>>> t is s
False
>>> g is s
True
t
可能等于s
,但.copy()
已创建单独的对象,而g
是对同一个对象。为什么这种差异是相关的?考虑一下:
>>> g.add(6)
>>> s
set([1, 2, 3, 4, 5, 6])
>>> t
set([1, 2, 3, 4, 5])
您可能会发现this有用的阅读材料。
答案 2 :(得分:2)
答案 3 :(得分:2)
集合是Python中的可变对象,因此根据您使用它的操作,您可能希望对副本进行操作,以防止传播您所做的任何更改。
如果您确定您正在执行的操作没有副作用,请继续并指定它。在这种情况下,请注意s
指向的值的任何更改也会影响t
的值,因为它们都指向同一个集合实例(如果您将python变量视为C,则会有所帮助)指针)。