如何在 Python 中執行列表減法

Rayven Esplanada 2023年1月3日 2020年11月24日 Python Python List
  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 存在於兩個集合中。這種行為符合預期。

相關文章 - Python List

  • 在 Python 中將字典轉換為列表
  • 從 Python 列表中刪除某元素的所有出現
  • 在 Python 中從列表中刪除重複項
  • 如何在 Python 中獲取一個列表的平均值
  • Python 列表方法 append 和 extend 之間有什麼區別
  • 如何在 Python 中將列表轉換為字串