Python 如何比较两个列表的元素
在本文中,我们将介绍在Python中比较两个列表的元素的不同方法。要比较两个列表,我们比较一个列表的数据项与另一个列表的数据项,并检查它们是否相同。
下面是两个相似的列表。
List_1 = [1,2,3,4,5,6,7]
List_2 = [1,2,3,4,5,6,7]
以上两个的输出应该是列表是相同的。
使用set()方法和==
运算符
在这种方法中,我们使用set()方法和==
运算符来比较两个列表的元素。Python的set()方法可以无视项目的顺序将列表转换为集合。我们还使用等于运算符(==
)来比较列表的数据项。
示例
在下面的示例中,将对这两个列表进行比较。我们将列表转换为集合,然后使用==
运算符来比较每个元素。如果两个列表中的所有元素都相等,那么就会执行该块,并显示结果。
list_1 = [1, 2, 3, 4, 5]
list_2 = [2, 3, 1, 5, 4]
a = set(list_1)
b = set(list_2)
if a == b:
print("The list_1 and list_2 are equal")
else:
print("The list_1 and list_2 are not equal")
输出
执行上述程序后,获得以下输出。
The list_1 and list_2 are equal
使用sort()方法和==
运算符
在这种方法中,我们使用 sort() 方法和==
运算符来比较两个列表的元素。Python提供的 sort() 方法用于将列表的元素按升序或降序排序。在对列表进行排序后,我们使用==
运算符来比较两个列表。两个列表中的相同元素处于相同的索引位置,这意味着这两个列表是相等的。
示例
在下面的示例中,我们首先使用 sort() 方法对列表的元素进行排序,然后使用==
运算符来比较两个列表。
list_1 = [1, 2, 3, 4, 5]
list_2 = [2, 3, 1, 5, 4]
list_3 = [1, 5, 6, 3, 4]
list_1.sort()
list_2.sort()
list_3.sort()
if list_1 == list_2:
print("The list_1 and list_2 are the same")
else:
print("The list_1 and list_2 are not the same")
if list_1 == list_3:
print("The list_1 and list_3 are the same")
else:
print("The list_1 and list_3 are not the same")
输出
上述代码产生以下输出结果。
The list_1 and list_2 are the same
The list_1 and list_3 are not the same
使用map()和reduce()方法
我们需要导入functools来使用 map() 和 reduce() 方法。
map() 函数接受两个参数:一个函数和一个可迭代对象(列表、元组、字符串等),并返回一个Map对象。该函数应用于每个列表元素,并返回迭代器。
此外, reduce() 方法递归地将指定的函数应用于可迭代对象。
在这种情况下,我们将结合使用这两种策略。 map() 方法会将函数(可以是用户定义的函数或lambda函数)应用于每个可迭代对象,而 reduce() 函数将处理递归应用。
示例
以下是一个使用 map() 和 reduce() 方法比较两个列表的示例代码。
import functools
list1 = [1, 2, 3, 4, 5]
list2 = [1, 5, 6, 3, 4]
list3 = [2, 3, 1, 5, 4]
if functools.reduce(lambda x, y: x and y, map(lambda a, b: a == b, list1, list2), True):
print("The list1 and list2 are same")
else:
print("The list1 and list2 are not 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 same")
else:
print("The list1 and list3 are the same")
输出
上述代码的输出如下:
The list1 and list2 are not same
The list1 and list3 are the same