📜  Python|多个列表的交集

📅  最后修改于: 2022-05-13 01:55:36.977000             🧑  作者: Mango

Python|多个列表的交集

给定两个列表列表,编写一个Python程序来查找给定两个列表之间的交集。

例子:

Input : lst1 = [['a', 'c'], ['d', 'e']]
        lst2 = [['a', 'c'], ['e', 'f'], ['d', 'e']]
Output : [['a', 'c'], ['d', 'e']]

Input : lst1 = [[1, 5, 7], [2, 3], [6, 9], [4, 8]]
        lst2 = [[9, 3], [2, 3], [6, 9]]
Output : [[2, 3], [6, 9]]


方法#1:朴素(列表理解)

找到列表列表交集的蛮力或幼稚方法是使用列表理解或简单的for循环。

# Python3 program to find 
# Intersection of list of lists
  
def intersection(lst1, lst2):
      
    return [item for item in lst1 if item in lst2]
              
# Driver code
lst1 = [['a', 'c'], ['d', 'e']]
lst2 = [['a', 'c'], ['e', 'f'], ['d', 'e']]
print(intersection(lst1, lst2))
输出:
[['a', 'c'], ['d', 'e']]


方法 #2:使用 Set intersection()

与幼稚的方法相比,这是一种有效的方法。我们首先使用map()将两个列表列表转换为元组列表,因为Python集与元组兼容,而不是列表。然后我们简单地找到两个列表的 Set intersection()

# Python3 program to find 
# Intersection of list of list
  
def intersection(lst1, lst2):
    tup1 = map(tuple, lst1)
    tup2 = map(tuple, lst2) 
    return list(map(list, set(tup1).intersection(tup2)))
              
# Driver code
lst1 = [['a', 'c'], ['d', 'e']]
lst2 = [['a', 'c'], ['e', 'f'], ['d', 'e']]
print(intersection(lst1, lst2))
输出:
[['d', 'e'], ['a', 'c']]