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