如何在 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 中比较列表的一些方法,既考虑数据项的顺序,也未考虑数据项的顺序。
广告