运算符和非运算符版本的Python集合操作之间的区别

时间:2012-02-09 21:33:10

标签: python operators set

在python集上使用intersect方法或&运算符之间有什么区别。我读到在以前的版本中,&的参数必须是一个集合,而不仅仅是任何迭代,尽管似乎不再是这种情况。

在语义,约束,性能或简单的pythonic风格方面是否存在差异?

3 个答案:

答案 0 :(得分:3)

这些方法可以绑定到名称以供以后使用,而运算符可以替换为operator模块中的操作,以实现更大的抽象。

答案 1 :(得分:1)

功能上没有区别,尽管使用运算符的速度要快一些,因为Python特殊情况下可以访问这些方法。大多数程序的性能差异并不大,要求使用运算符。

答案 2 :(得分:1)

intersection() 这样的方法将接受任何可迭代对象,而运算符仅接受集合类型。

信息位于 docs 中的方法描述下方:

<块引用>

注意,union()、intersection()、 difference() 和 symmetry_difference()、issubset() 和 issuperset() 方法将接受任何可迭代对象作为参数。相比之下,他们的 基于运算符的对应物需要设置它们的参数。