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