Python查詢陣列公共元素的程式


以多維陣列為例,有一種方法可以找到多維陣列中存在的公共元素——intersection_update()。

此方法用於查詢多維陣列中存在的公共或相交元素。讓我們考慮一個輸入輸出場景,然後繼續進行程式設計。

輸入輸出場景

考慮一個本質上是多維的二維陣列。

arr = [[1, 2, 3, 4], [3, 4, 5, 6], [7, 8, 3, 4], [4, 9, 8, 3], [4, 3, 10, 12]]
  • 上述陣列包含5個子陣列。

  • 我們可以清楚地觀察到元素“3”和“4”存在於“arr”的所有子陣列中。

  • 因此,元素“3”和“4”被認為是二維陣列arr的公共元素。

示例

在這個示例中,我們將使用intersection_update()方法查詢多維陣列中存在的公共元素。

  • 考慮一個可以從中找到公共元素的二維陣列。

  • 宣告一個引數化方法,該方法可以將二維陣列作為引數來查詢公共元素。

  • 在方法中,用0初始化集合陣列並將值賦給變數。

  • 使用迴圈遍歷陣列元素。

  • 藉助intersection_update()方法,在遍歷時依次查詢公共元素。

def common_elements(arr):
   result = set(arr[0])
   for x in arr[1:]:
      result.intersection_update(x) 
   return list(result)
# main section
if __name__ == "__main__":

   arr = [[1, 2, 3, 4], [3, 4, 5, 6], [7, 8, 3, 4], [4, 9, 8, 3], [4, 3, 10, 12]]
   res = common_elements(arr)
   if len(res) > 0:
      print ("The common elements present within the array are: ",res)

   else:
      print ("There are no common elements present within the array !!")

輸出

上述程式的輸出如下:

The common elements present within the array are:  [3, 4]

查詢兩個不同陣列中的公共元素

NumPy的intersect1d()方法可用於查詢兩個一維陣列的公共元素。這類似於處理多維陣列的intersect_update()方法。為了更好地理解這個概念,讓我們來看一個例子。

輸入輸出場景

考慮兩個本質上是一維的陣列。

arr1 = [1, 2, 3, 4]
arr2 = [3, 4, 5, 6]
  • 我們可以清楚地看到元素“3”和“4”存在於陣列arr1和arr2中。

  • 因此,我們可以得出結論,陣列arr1和arr2的公共元素是3和4。

示例

在下面的示例中,我們將使用numpy模組的intersect1d()方法查詢多個一維陣列中存在的公共元素。

import numpy as n
arr1 = [1, 2, 3, 4]
print("The first array is: ")
print(arr1)
arr2 = [3, 4, 5, 6]
print("The second array is: ")
print(arr2)
narr1 = n.array(arr1)
narr2 = n.array(arr2)
print("The common elements within the given arrays are: ")
print(n.intersect1d(narr1, narr2))

輸出

上述程式的輸出如下:

The first array is:
[1, 2, 3, 4]
The second array is:
[3, 4, 5, 6]
The common elements within the given arrays are:
[3 4]

這樣,根據陣列的型別,可以遵循相應的步驟。如果考慮的陣列是多維陣列,則將遵循第一個程式中遵循的步驟。

如果考慮的陣列是一維陣列,則將遵循第二個程式中遵循的步驟。這就是查詢一個或多個數組的公共元素的方法。

更新於:2023年5月5日

瀏覽量:166

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.