📜  Python|记录列表的差异

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

Python|记录列表的差异

有时,在处理数据时,我们可能会遇到一个问题,即我们需要找到我们收到的两个列表之间的差异记录。这是一个非常常见的问题,记录通常以元组的形式出现。让我们讨论一些可以解决这个问题的方法。

方法#1:使用列表推导
可以选择列表理解作为在一行中执行此任务的方法,而不是运行循环来查找差异元素。在此,我们只迭代单个列表并检查是否有任何元素出现在另一个列表中。

# Python3 code to demonstrate working of
# Difference in Record Lists
# Using list comprehension
  
# Initializing lists
test_list1 = [('gfg', 1), ('is', 2), ('best', 3)]
test_list2 = [('i', 3), ('love', 4), ('gfg', 1)]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# Intersection in Tuple Records Data
# Using list comprehension
res = [ele1 for ele1 in test_list1 for ele2 in test_list2 if ele1 == ele2]
res = list(set(res) ^ set(test_list1))
  
# printing result
print("The difference of data records is : " + str(res))
输出 :
The original list 1 is : [('gfg', 1), ('is', 2), ('best', 3)]
The original list 2 is : [('i', 3), ('love', 4), ('gfg', 1)]
The difference of data records is : [('best', 3), ('is', 2)]

方法#2:使用set.intersection() + set 操作
也可以使用通用集合交集以较小的方式执行此任务。在此,我们首先将记录列表转换为集合,然后使用 intersection() 执行其交集。然后通过从第一个列表中获取结果的不常见元素来计算结果。

# Python3 code to demonstrate working of
# Difference in Record Lists
# Using set.intersection() + set operations
  
# Initializing lists
test_list1 = [('gfg', 1), ('is', 2), ('best', 3)]
test_list2 = [('i', 3), ('love', 4), ('gfg', 1)]
  
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
  
# Difference in Record Lists
# Using set.intersection() + set operations
res = list(set(test_list1).intersection(set(test_list2)))
res = list(set(res) ^ set(test_list1))
  
# printing result
print("The difference of data records is : " + str(res))
输出 :
The original list 1 is : [('gfg', 1), ('is', 2), ('best', 3)]
The original list 2 is : [('i', 3), ('love', 4), ('gfg', 1)]
The difference of data records is : [('best', 3), ('is', 2)]