Python程序查找两个数组的公共元素


数组是一种数据结构,由相同数据类型的元素集合组成,每个元素都由一个索引标识。

[2, 4, 0, 5, 8]
 0  1  2  3  4 

整数2、4、0、5、8是数组元素,0、1、2、3、4分别是数组元素的索引值。

在下面的文章中,我们将讨论查找两个数组之间公共元素的Python程序。

输入输出场景

假设我们有两个数组A和B。结果数组包含两个数组之间的公共元素。

Input arrays:
A = [1, 2, 3, 4, 5]
B = [5, 2, 6, 3, 9]

Output array:
[2, 3, 5]

元素2、3、5是两个输入数组之间的公共元素。

Python没有原生数组数据结构来表示数组。相反,我们可以使用列表作为数组。让我们看看查找公共元素的多种方法。

使用列表推导式

在Python中,列表推导式提供了构建列表的最短语法,而无需初始化空列表以在每次迭代时追加值。

示例

在下面的示例中,我们将使用列表推导式定义公共元素。

a = [1, 2, 3, 4, 5]
b = [5, 2, 6, 3, 9]

result = [i for i in a if i in b]

print("The common elements are:", result)

输出

The common elements are: [2, 3, 5]

最初,使用for循环迭代数组a的所有元素,并检查每个元素是否在数组b中。最后,所有公共元素都存储在结果数组中。

使用集合

查找两个数组中的公共元素与查找两个集合的交集非常相似。通过使用Python集合数据结构和属性,我们可以轻松识别两个数组中的公共元素。

示例

最初,我们将列表a和b转换为集合,然后在两个集合之间应用交集属性“&”以获取公共元素。

a = [1, 2, 3, 4, 5]
b = [5, 2, 6, 3, 9]

result = (set(a) & set(b))

if result:
   print("The common elements are:", result)
else:
   print("No common elements present in two arrays")

输出

The common elements are: {2, 3, 5}

对于此示例,2、3、5是公共元素。

示例

让我们再举一个查找公共元素的例子。

a = [1, 2, 3, 4]
b = [5, 6, 7, 8]
result = (set(a) & set(b))
if result:
   print("The common elements are:", result)
else:
   print("No common elements present in two arrays")

输出

No common elements present in two arrays

如果未找到公共元素,则“&”属性将返回空集。

使用NumPy

numpy.intersect1d()方法用于查找两个数组之间的公共元素。intersect1d()方法将两个数组作为参数,它将返回一个包含所有公共元素的数组。

语法

numpy.intersect1d(ar1, ar2)

它查找两个数组的交集,并返回两个输入数组中存在的排序的唯一值。

示例

在此示例中,我们将使用numpy.array()方法创建两个NumPy数组,然后应用numpy.intersect1d()方法

import numpy as np

arr1 = np.array([1, 3, 4, 3])
arr2 = np.array([3, 1, 2, 1])

result = np.intersect1d(arr1, arr2)

print("The common elements are:", result)

输出

The common elements are: [1 3]

从上面的输出中,公共元素为1、3。

更新于: 2023年5月15日

6K+浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.