Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find intersection of two nested lists?

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?

Related

  • Flattening a shallow list in python
like image 855
elfuego1 Avatar asked Mar 13 '09 13:03

elfuego1


People also ask

How do you find the union and intersection of two lists in Python?

Python's built-in data type set() and its helper functions can be leveraged to make sets and perform different operations on them. Union and intersection are the two of the most commonly performed operations on sets and can be found with the union() and intersection() functions.

How do you find the intersection of two sets in Python?

Python Set intersection() Method The intersection() method returns a set that contains the similarity between two or more sets. Meaning: The returned set contains only items that exist in both sets, or in all sets if the comparison is done with more than two sets.

How many points are there in the intersection of two lists?

Two distinct lines will always intersect in at most one point.


1 Answers

You don't need to define intersection. It's already a first-class part of set.

>>> b1 = [1,2,3,4,5,9,11,15] >>> b2 = [4,5,6,7,8] >>> set(b1).intersection(b2) set([4, 5]) 
like image 80
S.Lott Avatar answered Oct 01 '22 04:10

S.Lott