比较子列表元素顺序是否匹配主列表并返回对应校验结果
子列表与主列表顺序匹配校验实现
实现思路
- 先为主列表的所有元素构建索引映射字典,避免每次查找元素位置时重复遍历主列表,大幅提升多子列表校验场景下的执行效率
- 遍历子列表,依次校验元素是否存在于主列表、且当前元素在主列表的索引严格大于前一个元素的索引
- 所有元素都满足上述条件则返回
PASS,任意条件不满足直接返回FAIL
代码实现(Python)
def compare(sub_list, main_list): # 构建主列表元素到首次出现索引的映射 main_element_index = {value: index for index, value in enumerate(main_list)} # 空列表默认返回PASS,可根据业务需求调整该逻辑 if not sub_list: return "PASS" pre_index = main_element_index.get(sub_list[0]) # 子列表第一个元素不在主列表中直接返回FAIL if pre_index is None: return "FAIL" for current_item in sub_list[1:]: current_index = main_element_index.get(current_item) # 元素不存在主列表 或 顺序不符合要求 直接返回FAIL if current_index is None or current_index <= pre_index: return "FAIL" pre_index = current_index return "PASS"
测试验证
# 示例定义 l = [1,2,3,4,5] l1 = [2,5] l2 = [5,1] # 调用测试 print(compare(l1, l)) # 输出:PASS print(compare(l2, l)) # 输出:FAIL
补充说明
如果主列表存在重复元素,上述实现默认取元素首次出现的位置校验顺序,如需按最后一次出现的位置校验,只需修改索引映射的构建逻辑为:
main_element_index = {value: index for index, value in reversed(list(enumerate(main_list)))}
内容的提问来源于stack exchange,提问作者Jagadeeshkumar Viswanathan
相关产品推荐
相关产品推荐

