Python 2.7 中集的对称差异与带变更的对称差异有什么区别?
下面这两种实现集合的方式有什么不同呢?
在我的情况下,它们的结果都是一样的。
集合的对称差异(带修改)。
s = set([1, 2, 3, 4, 5])
s.symmetric_difference_update(set ([5, 6, 7]))
print s
set([1, 2, 3, 4, 6, 7]) #OUTPUT
集合的对称差异。
print set([1, 2, 3, 4, 5]).symmetric_difference(set([5, 6, 7]))
set([1, 2, 3, 4, 6, 7]) #OUTPUT
2 个回答
2
根据Python标准库的文档,s.symmetric_difference_update(otherset)
这个方法会用两个集合的对称差更新原来的集合,而s.symmetric_difference(otherset)
这个方法只是返回对称差的结果。我们来对比一下:
In [1]: s = set([1, 2, 3, 4, 5])
In [2]: s.symmetric_difference(set ([5, 6, 7]))
Out[2]: {1, 2, 3, 4, 6, 7}
In [3]: print s
set([1, 2, 3, 4, 5])
在这种情况下,s
的内容不会改变。
2
它们的结果不一样。你做的事情也不一样。试试这个:
s = set([1, 2, 3, 4, 5])
s.symmetric_difference_update(set ([5, 6, 7]))
print s
对比这个:
s = set([1, 2, 3, 4, 5])
s.symmetric_difference(set ([5, 6, 7]))
print s
或者,试试这个:
print set([1, 2, 3, 4, 5]).symmetric_difference_update(set([5, 6, 7]))
对比这个:
print set([1, 2, 3, 4, 5]).symmetric_difference(set([5, 6, 7]))
现在看到区别了吗?