Python – 测试常用元素顺序
有时,在使用列表时,我们可能会遇到需要测试列表是否包含公共元素的问题。这类问题已经处理过很多次,并且有很多解决方案。但有时,我们可能会遇到一个问题,我们需要检查这些公共元素在两个列表中是否以相同的顺序出现。让我们讨论可以执行此任务的某些方式。
方法 #1:使用循环 + set()
上述功能的组合可用于执行此任务。在此,我们遍历列表并检查是否使用我们为公共元素排序的条件。使用 set() 执行重复删除。
# Python3 code to demonstrate
# Test Common Elements Order
# using loop + set()
# helper function
def common_ord(test_list1, test_list2):
comm = set(test_list1)
comm.intersection_update(test_list2)
pr_idx = 0
for ele in test_list1:
if ele in comm:
try:
pr_idx = test_list2.index(ele, pr_idx)
except ValueError:
return False
return True
# Initializing lists
test_list1 = ['Gfg', 'is', 'for', 'Geeks']
test_list2 = [1, 'Gfg', 2, 'Geeks']
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
# Test Common Elements Order
# using loop + set()
res = common_ord(test_list1, test_list2)
# printing result
print ("Are common elements in order ? : " + str(res))
输出 :
The original list 1 is : ['Gfg', 'is', 'for', 'Geeks']
The original list 2 is : [1, 'Gfg', 2, 'Geeks']
Are common elements in order ? : True
方法 #2:使用列表理解 + set()
上述功能的组合以类似的方式执行任务。不同之处在于,与上层方法相比,我们使用了更短的结构。
# Python3 code to demonstrate
# Test Common Elements Order
# using list comprehension + set()
# Initializing lists
test_list1 = ['Gfg', 'is', 'for', 'Geeks']
test_list2 = [1, 'Gfg', 2, 'Geeks']
# printing original lists
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
# Test Common Elements Order
# using list comprehension + set()
temp = set(test_list1) & set(test_list2)
temp1 = [val for val in test_list1 if val in temp]
temp2 = [val for val in test_list2 if val in temp]
res = temp1 == temp2
# printing result
print ("Are common elements in order ? : " + str(res))
输出 :
The original list 1 is : ['Gfg', 'is', 'for', 'Geeks']
The original list 2 is : [1, 'Gfg', 2, 'Geeks']
Are common elements in order ? : True