Python|删除匹配的元组
前面已经讨论过从两个列表中删除匹配元素并构造一个仅包含第二个列表中不存在的过滤元素的新列表的问题,但有时,我们不止一个基本元素,而是一个元组作为列表的元素。处理这种情况需要不同类型的处理。让我们讨论如何解决这个问题的某些方法。
方法#1:使用列表推导
这个特定的任务可以使用列表推导作为我们将使用的 for 循环的简写来完成。我们只是检查另一个元组中是否存在一个元组并做出相应的决定。
# Python3 code to demonstrate
# filter repeated tuple
# using list comprehension
# initializing lists
test_list1 = [('Geeks', 'for'), ('Geeks', 'is'), ('Computer', 'Science')]
test_list2 = [('Geeks', 'for'), ('Geeks', 'is')]
# printing original lists
print("The original list 1 : " + str(test_list1))
print("The original list 1 : " + str(test_list2))
# using list comprehension
# filter repeated tuple
res = [sub for sub in test_list1 if sub not in test_list2]
# print result
print("The filtered list of tuples : " + str(res))
输出 :
The original list 1 : [('Geeks', 'for'), ('Geeks', 'is'), ('Computer', 'Science')]
The original list 1 : [('Geeks', 'for'), ('Geeks', 'is')]
The filtered list of tuples : [('Computer', 'Science')]
方法 #2:使用 set() + “ -
”运算符
获取两个列表的差异的任务也可以使用转换列表的集合来完成,然后可以使用减号运算符来获取集合的差异。
# Python3 code to demonstrate
# filter repeated tuple
# using set() + "-" operator
# initializing lists
test_list1 = [('Geeks', 'for'), ('Geeks', 'is'), ('Computer', 'Science')]
test_list2 = [('Geeks', 'for'), ('Geeks', 'is')]
# printing original lists
print("The original list 1 : " + str(test_list1))
print("The original list 1 : " + str(test_list2))
# using set() + "-" operator
# filter repeated tuple
res = list(set(test_list1) - set(test_list2))
# print result
print("The filtered list of tuples : " + str(res))
输出 :
The original list 1 : [('Geeks', 'for'), ('Geeks', 'is'), ('Computer', 'Science')]
The original list 1 : [('Geeks', 'for'), ('Geeks', 'is')]
The filtered list of tuples : [('Computer', 'Science')]