如何在 Python 中比較兩個列表?


Python 中的列表是相似項的集合。有時我們可能需要比較兩個列表中的資料項以執行某些操作。我們將討論在 Python 中比較兩個列表的某些方法。

使用 list.sort() 和 == 運算子

list.sort() 方法對兩個列表進行排序,== 運算子逐項比較兩個列表,這意味著它們在相同位置具有相同的資料項。這檢查列表是否包含相同的資料項值,但它不考慮列表中元素的順序。這意味著根據此比較方法,列表 [1,2,3] 將等於列表 [2,1,3]。

示例

 即時演示

def compareList(l1,l2):
   l1.sort()
   l2.sort()
   if(l1==l2):
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print("First comparison",compareList(l1,l2))
l3=[1,2,3]
l4=[1,2,4]
print("Second comparison",compareList(l3,l4))

輸出

First comparison Equal
Second comparison Non equal

使用 collections.Counter()

此方法透過比較第一個列表中每個元素的頻率與第二個列表的頻率來測試列表的相等性。此方法也不考慮列表元素的順序。

示例

 即時演示

import collections
def compareList(l1,l2):
   if(collections.Counter(l1)==collections.Counter(l2)):
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print("First comparison",compareList(l1,l2))
l3=[1,2,3]
l4=[1,2,4]
print("Second comparison",compareList(l3,l4))

輸出

First comparison Non equal
Second comparison Equal

使用 sum()、zip() 和 len()

此方法首先比較兩個列表的每個元素並將它們儲存為 1 的總和,然後將其與另一個列表的長度進行比較。對於此方法,我們必須首先檢查兩個列表的長度是否相等,然後再執行此計算。

此方法還檢查元素的順序。這意味著列表 [1,2,3] 不等於列表 [2,1,3]。

示例

 即時演示

def compareList(l1,l2):
   if(len(l1)==len(l2) and len(l1)==sum([1 for i,j in zip(l1,l2) if i==j])):
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print("First comparison",compareList(l1,l2))
l3=[1,2,3]
l4=[1,2,3]
print("Second comparison",compareList(l3,l4))

輸出

First comparison Non equal
Second comparison Equal

如上例所示,對於第一次比較,兩個列表中的資料項相等,但元素的順序不同。因此,第一次比較返回不相等。

使用 == 運算子

這是第一種方法的修改。在這種方法中,列表在不排序的情況下進行比較,因此,此方法考慮了列表中資料項的順序。

示例

 即時演示

def compareList(l1,l2):
   if(l1==l2):
      return "Equal"
   else:
      return "Non equal"
l1=[1,2,3]
l2=[2,1,3]
print("First comparison",compareList(l1,l2))
l3=[1,2,3]
l4=[1,2,3]
print("Second comparison",compareList(l3,l4))

輸出

First comparison Non equal
Second comparison Equal

這些是在 Python 中比較列表的一些方法,既考慮資料項的順序,也未考慮資料項的順序。

更新於: 2023年8月23日

68K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告