📌  相关文章
📜  python 两个数组中的公共元素 - Python (1)

📅  最后修改于: 2023-12-03 15:04:13.966000             🧑  作者: Mango

Python 两个数组中的公共元素

在开发过程中,经常需要对两个数组中的公共元素进行操作。Python中提供了多种方法来找到这些元素。

方法一:使用集合(set)

使用set可以在O(N)时间内解决此问题。首先,将其中一个数组中的元素添加到一个集合中。然后,遍历另一个数组并查找每个元素是否在集合中。如果是,则将该元素添加到结果集中。

def common_elements(set1, set2):
    return list(set(set1) & set(set2))

set1 = [1, 2, 3, 4, 5]
set2 = [4, 5, 6, 7, 8]
print(common_elements(set1, set2))

输出:

[4, 5]
方法二:使用内置函数(不推荐)

Python提供了一个内置函数(intersect)来查找两个集合的交集。但是,这种方法的时间复杂度是O(N²),并且无法保证结果的顺序。

set1 = [1, 2, 3, 4, 5]
set2 = [4, 5, 6, 7, 8]
intersection = set(set1).intersection(set2)
print(list(intersection))

输出:

[4, 5]
方法三:使用列表推导式

列表推导式是Python语言中非常强大的一个特性。使用列表推导式可以很容易地找出两个数组中的公共元素。

list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 6, 7, 8]
common = [x for x in list1 if x in list2]
print(common)

输出:

[4, 5]
方法四:使用NumPy库(适用于大数组)

当处理大数组时,上述方法可能不够快。可以使用NumPy库中的intersect1d函数来查找两个数组的交集。

import numpy as np

array1 = np.array([1, 2, 3, 4, 5])
array2 = np.array([4, 5, 6, 7, 8])
intersection = np.intersect1d(array1, array2)
print(intersection)

输出:

[4 5]

以上是Python中找出两个数组中的公共元素的几种方法,具体使用哪种方法取决于数据集的大小和性能要求。