Python |两个列表的交集
两个列表的交集意味着我们需要获取两个初始列表共有的所有元素,并将它们存储到另一个列表中。现在在 Python 中有各种各样的方法,通过它们我们可以执行列表的交集。 示例:
Input :
lst1 = [15, 9, 10, 56, 23, 78, 5, 4, 9]
lst2 = [9, 4, 5, 36, 47, 26, 10, 45, 87]
Output :
[9, 10, 4, 5]
Input :
lst1 = [4, 9, 1, 17, 11, 26, 28, 54, 69]
lst2 = [9, 9, 74, 21, 45, 11, 63, 28, 26]
Output :
[9, 11, 26, 28]
方法 1: 这是我们没有使用任何内置函数的最简单的方法。
Python 3
# Python program to illustrate the intersection
# of two lists in most simple way
def intersection(lst1, lst2):
lst3 = [value for value in lst1 if value in lst2]
return lst3
# Driver Code
lst1 = [4, 9, 1, 17, 11, 26, 28, 54, 69]
lst2 = [9, 9, 74, 21, 45, 11, 63, 28, 26]
print(intersection(lst1, lst2))
输出:
[9, 11, 26, 28]
法二: 此法包括使用套()法。
Python 3
# Python program to illustrate the intersection
# of two lists using set() method
def intersection(lst1, lst2):
return list(set(lst1) & set(lst2))
# Driver Code
lst1 = [15, 9, 10, 56, 23, 78, 5, 4, 9]
lst2 = [9, 4, 5, 36, 47, 26, 10, 45, 87]
print(intersection(lst1, lst2))
输出:
[9, 10, 4, 5]
方法三: 在这个方法中我们设置()较大的列表,然后使用内置的函数交集()计算相交列表。交集()是集合的一级部分。
Python 3
# Python program to illustrate the intersection
# of two lists using set() and intersection()
def Intersection(lst1, lst2):
return set(lst1).intersection(lst2)
# Driver Code
lst1 = [ 4, 9, 1, 17, 11, 26, 28, 28, 26, 66, 91]
lst2 = [9, 9, 74, 21, 45, 11, 63]
print(Intersection(lst1, lst2))
输出:
{9, 11}
方法 4: 通过使用这个混合方法程序的复杂度下降到 O(n)。这是执行以下程序的有效方法。
Python 3
# Python program to illustrate the intersection
# of two lists
def intersection(lst1, lst2):
# Use of hybrid method
temp = set(lst2)
lst3 = [value for value in lst1 if value in temp]
return lst3
# Driver Code
lst1 = [9, 9, 74, 21, 45, 11, 63]
lst2 = [4, 9, 1, 17, 11, 26, 28, 28, 26, 66, 91]
print(intersection(lst1, lst2))
输出:
[9, 9, 11]
方法 5: 这是在其他列表内部的子列表上执行交集的地方。这里我们使用了滤镜的概念()。
Python 3
# Python program to illustrate the intersection
# of two lists, sublists and use of filter()
def intersection(lst1, lst2):
lst3 = [list(filter(lambda x: x in lst1, sublist)) for sublist in lst2]
return lst3
# Driver Code
lst1 = [1, 6, 7, 10, 13, 28, 32, 41, 58, 63]
lst2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]]
print(intersection(lst1, lst2))
工作:过滤器部分获取每个子列表的项目,并检查它是否在源列表中。对列表 2 中的每个子列表执行列表理解。 产量:
[[13, 32], [7, 13, 28], [1, 6]]
版权属于:月萌API www.moonapi.com,转载请注明出处