Find intersection of two nested lists?

前端 未结 20 1389
星月不相逢
星月不相逢 2020-11-22 04:16

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

<
20条回答
  •  野性不改
    2020-11-22 05:07

    For people just looking to find the intersection of two lists, the Asker provided two methods:

    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]
    

    and

    def intersect(a, b):
         return list(set(a) & set(b))
    
    print intersect(b1, b2)
    

    But there is a hybrid method that is more efficient, because you only have to do one conversion between list/set, as opposed to three:

    b1 = [1,2,3,4,5]
    b2 = [3,4,5,6]
    s2 = set(b2)
    b3 = [val for val in b1 if val in s2]
    

    This will run in O(n), whereas his original method involving list comprehension will run in O(n^2)

提交回复
热议问题