如何在 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+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告