Python -Intersection of multiple lists? Python -Intersection of multiple lists? python python

Python -Intersection of multiple lists?


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

for newer versions of python:

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])>>> 


@user3917838

Nice and simple but needs some casting to make it work and give a list as a result. It should look like:

list(reduce(set.intersection, [set(item) for item in d ]))

where:

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

And result is:

[3, 4]

At least in Python 3.4