如何将集合列表作为单独的参数传递给函数?

时间:2014-01-24 07:21:40

标签: python list function set

我已经创建了一个我想要传递给set.intersection()的集合列表

例如:

List_of_Sets = [{1,2,3},{3,4,5},{5,6,7}]
set.intersection(List_of_Sets)

结果:

TypeError: descriptor 'intersection' requires a 'set' object but received a 'list'

期望的输出:

{3,5}

如何将列表中的每个集合作为单独的参数传递给set.intersection()?

2 个答案:

答案 0 :(得分:5)

使用解包运算符:set.intersection(*List_of_Sets)


正如另一个答案所指出的,你在列表中没有交叉点。您想计算相邻元素交集的并集吗?

>>> set.union(*[x & y for x, y in zip(List_of_Sets, List_of_Sets[1:])])
set([3, 5])

答案 1 :(得分:2)

>>> List_of_Sets = [{1,2,3},{3,4,5},{5,6,7}]
>>> set.intersection(*List_of_Sets)  # * unpacks list into arguments
set([])

该集合中没有交叉点,因此它返回一个空集。一个工作的例子:

>>> List_of_Sets2 = [{1,2,3},{3,4,5},{5,6,3}]
>>> set.intersection(*List_of_Sets2)  # * unpacks list into arguments
set([3])

Docs on unpacking with *