如何在Python中比较两个列表

如何在Python中比较两个列表

Python提供了多种比较两个列表的方法。比较是指将一个列表的数据项与另一个列表的数据项进行检查,判断它们是否相同。

list1 - [11, 12, 13, 14, 15]
list2 - [11, 12, 13, 14, 15]
Output - The lists are equal

以下是比较两个列表的方法。

  • cmp()函数
  • set()函数和==运算符
  • sort()函数和==运算符
  • collection.counter()函数
  • reduce()和map()函数

cmp()函数

Python的cmp()函数比较两个Python对象,并根据比较返回整数值-1、0、1。

注意 – 在Python 3.x版本中不使用。

set()函数和==运算符

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

解释:

在上面的示例中,我们声明了两个要相互比较的列表。我们将这些列表转换为集合,并使用==运算符比较每个元素。两个列表中的所有元素都相等,然后执行if块并打印结果。

使用==运算符的sort()方法

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

collection.counter()函数

collection模块提供了counter()函数,它可以高效地比较列表。它以字典格式<value>:<frequency>存储数据,并计算列表项的频率。

注意-此函数中列表元素的顺序不重要。

示例

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

减少(reduce)和映射(map)

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中比较两个列表的各种方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程