我想知道为什么这是有效的:
set(range(10)) - set(range(5))
但这是无效的:
set(range(10)) + set(range(5))
是不是因为‘+’既可以表示交集,也可以表示合并?
Python集没有针对+
的算法。
你可以用|
为固定的集合和&
为设定的交叉口。
集合实现-
作为设定的差别。您也可以使用^
对于对称集合差异(即,它将返回一个新集,其中只包含出现在一个集合中但在两个集合中都不出现的对象)。
Python选择使用|
而不是+
因为集合并是一个与布尔分离密切相关的概念.位向量(在python中是int
/long
)跨布尔值序列定义此操作,并称其为“按位或”。实际上,这个操作非常类似于集合,以至于二进制整数有时也被称为“位集”,其中集合中的元素被视为自然数。
因为int
已经将类集运算符定义为|
,,,&
和^
,这对于新的人来说是很自然的。set
键入以使用相同的接口。
相似问题