如何在 Python 中執行列表減法

Rayven Esplanada 2023年10月10日
  1. 在 Python 中,將列表轉換為集合來執行列表減法
  2. 在 Python 中使用列表推導式獲取列表差值
如何在 Python 中執行列表減法

本教程演示瞭如何在 Python 中執行列表減法,或者換句話說,列表減列表。

正如數學中的集合理論所定義的那樣,兩個集合的差值指的是一個集合中不存在於另一個集合中的元素。

例如,如果我們宣告這兩個列表。

list1 = [1, 2, 4]
list2 = [2, 3]

list1 - list2 的差值是 [1, 4], 而 list2 - list1 的差值是 [3]

在 Python 中,將列表轉換為集合來執行列表減法

在 Python 中支援集合理論操作。然而,只有 set 資料型別支援這些操作。因此,要使用 set 操作,必須將列表轉換為一個集合。這可以通過將一個列表包裹在函式 set() 中來實現。

注意
將一個列表轉換為一個集合將刪除任何型別的順序,並從列表中刪除重複的值。
listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]
setA = set(listA)
setB = set(listB)

print("A - B = ", setA - setB)

輸出:

A - B =  {1, 4, 9, 14}

結果輸出兩個集合之間的差異,並刪除重複的值。

我們可以使用函式 list() 將結果從 set 轉換為列表。

listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]
setA = set(listA)
setB = set(listB)

list_diff = list(setA - setB)

print("A - B: ", list_diff)

輸出:

A - B:  [1, 4, 9, 14]

在 Python 中使用列表推導式獲取列表差值

列表推導可以用來檢查一個元素是否只存在於第一個列表中而不存在於第二個列表中。這個解決方案可以在不將列表轉換為集合的情況下進行差異操作。

listA = [1, 2, 4, 7, 9, 11, 11, 14, 14]
listB = [2, 3, 7, 8, 11, 13, 13, 16]

listSub = [elem for elem in listA if elem not in listB]

print("A - B =", listSub)

輸出:

A - B = [1, 4, 9, 14, 14]

這個解決方案不會擾亂列表的順序,並且會刪除重複的元素。

然而,11 的值在 listA 中重複了兩次,並且 11 的兩次迭代都從 A - B 的結果中刪除,因為 11 存在於兩個集合中。這種行為符合預期。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

相關文章 - Python List