首頁 >後端開發 >Python教學 >Python程式計算兩個列表之間的對稱差集

Python程式計算兩個列表之間的對稱差集

WBOY
WBOY轉載
2023-08-28 08:57:291489瀏覽

Python程式計算兩個列表之間的對稱差集

在Python中,可以使用清單將多個項目保存在單一變數中。 Python 中用於儲存資料集合的四種內建資料類型之一是清單;另外三個是元組、集合和字典,每一個都有獨特的用途。

什麼是列表?

方括號用於建立清單。 Python 中最有效的工具是列表,因為它們不一定是同類的。像整數、字串和物件這樣的資料類型都可以在一個列表中找到。由於清單是可變的,因此即使在建立清單之後也可以對其進行變更。

列表中的對稱差異

在 LIST1 或 LIST2 中但不在兩者中的元素集構成了兩個列表 LIST1 和 LIST2 之間的對稱差異。

在 python 中計算兩個列表之間的對稱差異有多種方法,我們將採用最有效的方法來找出相同的差異。

我們已將列表轉換為集合,然後在這些集合之間進行對稱差異。

演算法

  • 建立清單

  • 將清單轉換為集合

  • #列印轉換後集合的對稱差

  • 列印清單的對稱差

#範例

在下面的程式中,使用「in」我們可以找到兩個清單之間的差異。 in 關鍵字有兩個功能。

  • 確定某個值是否存在於字串、清單、元組、範圍等。

  • 在 for 迴圈中重複遍歷清單。

L_1 = [11, 12, 13]
L_2 = [12, 13, 42]
L_3 = [3, 42, 5]

# converting lists to set
set_1 = set(L_1)
set_2 = set(L_2)

# now print the symmetric difference when

# when the converted set is passed as a parameter
print(set_1.symmetric_difference(set_2))

# now print the symmetric difference when list is

# passed as a parameter by converting it to a set
print(set_2.symmetric_difference(L_3))

輸出

{42, 11}
{13, 3, 12, 5}

範例

在這裡,我們建立了兩個列表,然後建立了一個空的臨時變數。然後我們使用 for 迴圈來迭代列表中的數字。 If 語句檢查數字是否常見,然後將元素附加到第一個建立的臨時變數。然後列印具有不同元素的清單。

list_1 = [1, 35, 20, 25, 70, 35, 80]
list_2 = [25, 80, 35]
temp_3 = []
for element in list_1:
   if element not in list_2:
      temp_3.append(element)
print(temp_3)

輸出

[1, 20, 70]

使用列表理解

在這種方法中,我們明確地將列表轉換為集合,然後使用減法運算子僅從另一個列表中刪除一個。前往 Python 中的集合以取得其他集合引用。這是與我們之前採用的策略類似的策略。唯一的區別是使用列表理解語法代替嵌套循環。

範例

以下程式正在比較兩個清單:list_1 和 list_2。它從第二個列表建立一個集合,然後使用它過濾掉兩個列表中出現的任何值。結果是新的過濾清單 (temp_3),其中僅包含 list_1 中未出現在 SET_1 (list_2) 中的元素。

list_1 = [13, 15, 22, 25, 30, 54, 40]
list_2 = [54, 45, 30, 13]
SET_1 = set(list_2)
temp_3 = [x for x in list_1 if x not in SET_1]
print(temp_3)

輸出

[15, 22, 25, 40]

不使用set()

在此方法中,使用基本組合技術從兩個清單中複製元素,同時定期檢查它們是否存在於另一個清單中。

範例

在下面的程式中 - 我們定義一個名為 Difference 的函數,它接受兩個列表作為參數。該函數會建立一個新列表 list_dif,其中包含兩個原始列表中都不存在的項目。然後它會列印出這個新列表以及兩個原始列表之間的差異。在此範例中,它印出 [1, 12, 25, 22, 30, 20]。

# this method helps to get difference of two lists

# by not using set()
def Difference(list1, list2):
   list_dif = [i for i in list_1 + list_2 if i not in list_1 or i not in list_2]
   return list_dif
list_1 = [1, 12, 25, 22, 30, 65, 70]
list_2 = [65, 20, 70]
list_3 = Difference(list_1, list_2)
print(list_3)

輸出

[1, 12, 25, 22, 30, 20]

使用對稱差

對稱difference ()方法傳回第一組或第二組中的元素。與兩個集合的共享元素不同,此方法不傳回交集。

範例

list_1 = [23, 18, 45, 25, 40, 23, 40]
list_2 = [23, 40, 35]
set_difference = set(list_1).symmetric_difference(set(list_2))
temp_3 = list(set_difference)
print(temp_3)

輸出

[35, 45, 18, 25]

結論

在本文中,我們使用了四種不同的方法透過 python 計算兩個列表之間的對稱差。每種方法都有一些獨特性和不同的處理任務的方式。

以上是Python程式計算兩個列表之間的對稱差集的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除