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+瀏覽量

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告