该集合的以下两个实现之间有什么区别?
在我的情况下,他们都给出了相同的结果。
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
答案 0 :(得分: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]))
现在看到差异?
答案 1 :(得分:2)
正如in the Python Standard Library documentation所解释的那样,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
不会更改。