Python 3.4设置交集

时间:2016-02-01 16:22:24

标签: python python-3.x set-intersection

我试图理解为什么我的交集在运行此代码时不返回空列表。

n = ([1,2,3,4,5],[3,4,5,6],[5,6,7],[7,8,9,10,11,12],[10,22,33,44,45])
w = set(n[0]).intersection(*n[:1])
print(w)
#Returns (1,2,3,4,5)

然而,这会返回正确的集合

n = ([1,2,3,4,5],[3,4,5,6],[5,6,7],[7,8,9,10,11,12],[10,22,33,44,45])
w = set(n[0]).intersection(*n)
print(w)
#Returns empty set.

这个问题给出了两个正确的结果:
Python -Intersection of multiple lists?

为什么在将第一组与剩余列表进行比较时,我得不到正确的结果?

1 个答案:

答案 0 :(得分:7)

*n[:1]解包到(n[0],) - 该集合的第一个元素。

所以你将n[0]与自己相交,结果就是你所看到的。你可能打算写

set(n[0]).intersection(*n[1:])