您提到的设置操作是:
^
-对称差(XOR):
返回一个新集合,该集合中有一个或多个元素,但不包含两个元素。
例:
{'1', '2', '3'} ^ {'2', '3', '4'} = {'1', '4'}|
-联合(OR):
返回具有该集合和所有其他元素的新集合。
例:
{'1', '2', '3'} | {'2', '3', '4'} = {'1', '2', '3', '4'}python中还有其他set操作:
&
-交集(AND):
返回一个新集合,其中包含该集合和所有其他集合共同的元素。
例:
{'1', '2', '3'} & {'2', '3', '4'} = {'2', '3'}-
-差异:
返回一个新集合,该集合中的元素不在其他集合中。
例:
{'1', '2', '3'} - {'2', '3', '4'} = {'1'}这些操作的优先顺序为
-, &, ^, |,因此在您的示例中,我们首先应用
^:
>>> y^z{'a', 'c', 'e', 'f', 'g', 'h', 'i'}然后
|:
>>> x|{'a', 'c', 'e', 'f', 'g', 'h', 'i'}{'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'}您描述的不同输出实际上是相同的集合,因为集合没有顺序。
>>> {'c', 'h', 'f', 'd', 'b', 'i', 'g', 'a', 'e'} == {'a', 'd', 'h', 'f', 'b', 'g', 'e', 'c', 'i'}True集合的字符串表示形式中显示的任何顺序都是实现细节,因此不应依赖,因为正如您所发现的那样,它会以不可预测的方式变化。



