Legend - 1 month ago 29
Python Question

# Python -Intersection of multiple lists?

I am playing with python and am able to get the intersection of two lists:

``````result = set(a).intersection(b)
``````

Now if
`d`
is a list containing
`a`
and
`b`
and a third element
`c`
, is there an built-in function for finding the intersection of all the three lists inside
`d`
? So for instance,

``````d = [[1,2,3,4], [2,3,4], [3,4,5,6,7]]
``````

then the result should be

``````[3,4]
``````

for 2.4, you can just define an intersection function.

``````def intersect(*d):
sets = iter(map(set, d))
result = sets.next()
for s in sets:
result = result.intersection(s)
return result
``````

the intersection method takes an arbitrary amount of arguments

``````result = set(d[0]).intersection(*d[:1])
``````

alternatively, you can intersect the first set with itself to avoid slicing the list and making a copy:

``````result = set(d[0]).intersection(*d)
``````

I'm not really sure which would be more efficient and have a feeling that it would depend on the size of the `d[0]` and the size of the list unless python has an inbuilt check for it like

``````if s1 is s2:
return s1
``````

in the intersection method.

``````>>> d = [[1,2,3,4], [2,3,4], [3,4,5,6,7]]
>>> set(d[0]).intersection(*d)
set([3, 4])
>>> set(d[0]).intersection(*d[1:])
set([3, 4])
>>>
``````
Source (Stackoverflow)