有什么区别-
和.difference()
设置?显然语法不一样,一个是二元运算符,另一个是实例方法。还有什么?
s1 = set([1,2,3])
s2 = set([3,4,5])
>>> s1 - s2
set([1, 2])
>>> s1.difference(s2)
set([1, 2])
有什么区别-
和.difference()
设置?显然语法不一样,一个是二元运算符,另一个是实例方法。还有什么?
s1 = set([1,2,3])
s2 = set([3,4,5])
>>> s1 - s2
set([1, 2])
>>> s1.difference(s2)
set([1, 2])
set.difference, set.union...
可以将任何可迭代对象作为第二个参数,而两者都需要设置为使用-
,输出没有区别。
Operation Equivalent Result
s.difference(t) s - t new set with elements in s but not in t
使用 .difference,您可以执行以下操作:
s1 = set([1,2,3])
print(s1.difference(*[[3],[4],[5]]))
{1, 2}
使用语法创建集合时也更有效,*(iterable,iterable)
因为您不创建中间集,您可以在此处查看一些比较
快速浏览一下,它可能从文档中不太明显,但深埋在一个段落中,专门用于区分方法调用和操作符版本
注意,union()、intersection()、difference() 和 symmetric_difference()、issubset() 和 issuperset() 方法的非运算符版本将接受任何可迭代作为参数。相反,它们基于运算符的对应物要求它们的参数是集合。这排除了容易出错的结构
set('abc') & 'cbs'
,例如支持更具可读性的set('abc').intersection('cbs')
.
该文档似乎表明差异可能需要多个集合,因此对于以下内容可能会更有效和更清晰:
s1 = set([1, 2, 3, 4])
s2 = set([2, 5])
s3 = set([3, 6])
s1.difference(s2, s3) # instead of s1 - s2 - s3
但我建议进行一些测试来验证。