I know how to get an intersection of two flat lists:
b1 = [1,2,3,4,5,9,11,15] b2 = [4,5,6,7,8] b3 = [val for val in b1 if val in b2]
or
def intersect(a, b): return list(set(a) & set(b)) print intersect(b1, b2)
But when I have to find intersection for nested lists then my problems starts:
c1 = [1, 6, 7, 10, 13, 28, 32, 41, 58, 63] c2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]]
In the end I would like to receive:
c3 = [[13,32],[7,13,28],[1,6]]
Can you guys give me a hand with this?
If you want:
Then here is your solution for Python 2:
In Python 3
filterreturns an iterable instead oflist, so you need to wrapfiltercalls withlist():Explanation:
The filter part takes each sublist’s item and checks to see if it is in the source list c1. The list comprehension is executed for each sublist in c2.