📌  相关文章
📜  Python|检查两个列表是否相同

📅  最后修改于: 2022-05-13 01:55:52.215000             🧑  作者: Mango

Python|检查两个列表是否相同

本文处理的任务是检查两个无序列表是否在完全相同的位置包含完全相同的元素,即检查两个列表是否完全相等。这是一个非常有用的实用程序,可用于日常编程。

方法 1:使用list.sort()==运算符
sort()加上==运算符可以完成此任务。我们首先对列表进行排序,如果两个列表相同,则它们的元素位于相同的位置。但这并没有考虑到列表中元素的顺序。

# Python 3 code to demonstrate 
# check if list are identical
# using sort() + == operator
  
# initializing lists 
test_list1 = [1, 2, 4, 3, 5]
test_list2 = [1, 2, 4, 3, 5]
  
# printing lists
print ("The first list is : " + str(test_list1))
print ("The second list is : " + str(test_list2))
  
# sorting both the lists
test_list1.sort()
test_list2.sort()
  
# using == to check if 
# lists are equal
if test_list1 == test_list2:
    print ("The lists are identical")
else :
    print ("The lists are not identical")

输出 :

The first list is : [1, 2, 4, 3, 5]
The second list is : [1, 2, 4, 3, 5]
The lists are identical

方法 2:使用collections.Counter()
使用Counter() ,我们通常能够获取列表中每个元素的频率,检查它,对于两个列表,我们可以检查两个列表是否相同。但是这种方法也忽略了列表中元素的排序,只考虑了元素出现的频率。

# Python 3 code to demonstrate 
# check if list are identical
# using collections.Counter()
import collections
  
# initializing lists 
test_list1 = [1, 2, 4, 3, 5]
test_list2 = [1, 2, 4, 3, 5]
  
# printing lists
print ("The first list is : " + str(test_list1))
print ("The second list is : " + str(test_list2))
  
# using collections.Counter() to check if 
# lists are equal
if collections.Counter(test_list1) == collections.Counter(test_list2):
    print ("The lists are identical")
else :
    print ("The lists are not identical")

输出 :

The first list is : [1, 2, 4, 3, 5]
The second list is : [1, 2, 4, 3, 5]
The lists are identical

方法 3:使用sum() + zip() + len()
使用sum() + zip() ,如果两个列表中的索引都具有相等的元素,我们可以将其中一个列表的总和作为 1 的总和,然后将该数字与其他列表的大小进行比较。这还需要在此计算之前首先检查两个列表是否相等。它还检查订单。

# Python 3 code to demonstrate 
# check if list are identical
# using sum() + zip() + len()
  
# initializing lists 
test_list1 = [1, 2, 4, 3, 5]
test_list2 = [1, 2, 4, 3, 5]
  
# printing lists
print ("The first list is : " + str(test_list1))
print ("The second list is : " + str(test_list2))
  
# using sum() + zip() + len() to check if 
# lists are equal
if len(test_list1)== len(test_list2) and len(test_list1) == sum([1 for i, j in zip(test_list1, test_list2) if i == j]):
    print ("The lists are identical")
else :
    print ("The lists are not identical")

输出 :

The first list is : [1, 2, 4, 3, 5]
The second list is : [1, 2, 4, 3, 5]
The lists are identical

方法4:使用reduce() + map()
仔细地将map()的功能与哈希值和reduce()的实用性结合起来,我们可以完成检查两个列表是否相等的任务是否相同。这也考虑了列表的顺序。

# Python 3 code to demonstrate 
# check if list are identical
# using map() + reduce()
import functools
  
# initializing lists 
test_list1 = [1, 2, 4, 3, 5]
test_list2 = [1, 2, 4, 3, 5]
  
# printing lists
print ("The first list is : " + str(test_list1))
print ("The second list is : " + str(test_list2))
  
# using map() + reduce() to check if 
# lists are equal
if functools.reduce(lambda i, j : i and j, map(lambda m, k: m == k, test_list1, test_list2), True) : 
    print ("The lists are identical")
else :
    print ("The lists are not identical")

输出 :

The first list is : [1, 2, 4, 3, 5]
The second list is : [1, 2, 4, 3, 5]
The lists are identical