📅  最后修改于: 2020-10-28 01:49:11             🧑  作者: Mango
Python提供了多种比较两个列表的方法。比较是将清单中的数据项与列表中的另一个数据项进行比较(无论它们是否相同)的过程。
list1 - [11, 12, 13, 14, 15]
list2 - [11, 12, 13, 14, 15]
Output - The lists are equal
下面给出比较两个列表的方法。
Python cmp()函数比较两个Python对象,并根据比较结果返回整数值-1、0、1。
注意-在Python 3.x版本中不使用。
Python set()函数将列表操纵到集合中,而无需考虑元素的顺序。此外,我们使用等于运算符(==)比较列表中的数据项。让我们了解以下示例。
范例-
list1 = [11, 12, 13, 14, 15]
list2 = [12, 13, 11, 15, 14]
a = set(list1)
b = set(list2)
if a == b:
print("The list1 and list2 are equal")
else:
print("The list1 and list2 are not equal")
输出:
The list1 and list2 are equal
在上面的示例中,我们声明了两个列表要相互比较。我们将这些列表转换为集合,并借助==运算符将每个元素进行比较。两个列表中的所有元素均相等,然后执行block并打印结果。
Python sort()函数用于对列表进行排序。相同列表的元素意味着相同的索引位置;名单是平等的。
注意-在sort()方法中,我们可以按任何顺序传递列表项,因为我们在比较之前对列表进行了排序。
让我们了解以下示例-
范例-
import collections
list1 = [10, 20, 30, 40, 50, 60]
list2 = [10, 20, 30, 50, 40, 70]
list3 = [50, 10, 30, 20, 60, 40]
# Sorting the list
list1.sort()
list2.sort()
list3.sort()
if list1 == list2:
print("The list1 and list2 are the same")
else:
print("The list1 and list3 are not the same")
if list1 == list3:
print("The list1 and list2 are not the same")
else:
print("The list1 and list2 are not the same")
输出:
The list1 and list3 are not the same
The list1 and list2 are not the same
收集模块提供counter(),可以有效地比较列表。它以字典格式存储数据
注意-在此函数中,列表元素的顺序无关紧要。
范例-
import collections
list1 = [10, 20, 30, 40, 50, 60]
list2 = [10, 20, 30, 50, 40, 70]
list3 = [50, 10, 30, 20, 60, 40]
if collections.Counter(list1) == collections.Counter(list2):
print("The lists l1 and l2 are the same")
else:
print("The lists l1 and l2 are not the same")
if collections.Counter(list1) == collections.Counter(list3):
print("The lists l1 and l3 are the same")
else:
print("The lists l1 and l3 are not the same")
输出:
The lists list1 and list2 are not the same
The lists list1 and list3 are the same
map()函数接受一个函数和Python迭代对象(列表,元组,字符串等)作为参数,并返回一个映射对象。该函数实现列表的每个元素,并返回一个迭代器作为结果。
此外,reduce()方法将给定的函数递归地实现到可迭代对象。
在这里,我们将两种方法结合使用。 map()函数将对每个可迭代对象实现该函数(可以是用户定义的或lambda函数),而reduce()函数将以递归的方式进行处理。
注意-我们需要导入functool模块以使用reduce()函数。
让我们了解以下示例。
范例-
import functools
list1 = [10, 20, 30, 40, 50]
list2 = [10, 20, 30, 50, 40, 60, 70]
list3 = [10, 20, 30, 40, 50]
if functools.reduce(lambda x, y: x and y, map(lambda a, b: a == b, list1, list2), True):
print("The list1 and list2 are the same")
else:
print("The list1 and list2 are not the same")
if functools.reduce(lambda x, y: x and y, map(lambda a, b: a == b, list1, list3), True):
print("The list1 and list3 are the same")
else:
print("The list1 and list3 are not the same")
输出:
The list1 and list2 are not the same
The list1 and list3 are the same
在本节中,我们介绍了在Python中比较两个列表的各种方法。