为什么只有在使用方法时,set操作才能与iterables一起使用?

时间:2017-08-25 20:37:54

标签: python set

为什么set操作在使用set方法时可以处理任意迭代,而不是运算符?显示我的意思:

>>> {0, 1, 2, 3}.intersection([0, 1])
{0, 1}
>>> {0, 1, 2, 3} & [0, 1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for &: 'set' and 'list'
>>>
>>> {0, 1, 2, 3}.union([4, 5])
{0, 1, 2, 3, 4, 5}
>>> {0, 1, 2, 3} | [4, 5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for |: 'set' and 'list'

1 个答案:

答案 0 :(得分:7)

来自docs

  

注意,union()intersection()difference()symmetric_difference()issubset()issuperset()方法的非运算符版本将接受任何iterable作为参数。相比之下,他们基于运营商的同行要求他们的论点是集合。 这排除了set('abc') & 'cbs'等易出错的结构,有利于提高可读性set('abc').intersection('cbs')

这种方式被认为不那么容易出错。