在Python 2.7中,设置对称差异和设置对称差异与变异有什么区别?

时间:2014-06-24 21:21:05

标签: python 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 个答案:

答案 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不会更改。