如何在 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 中比較列表的一些方法,既考慮資料項的順序,也未考慮資料項的順序。
廣告