Python中检查列表是否按顺序包含/不包含指定序列的最优方法
实现检查指定序列是否按精确顺序存在的函数
需求说明
需要实现一个函数,接收一个列表作为参数,用于检查序列['x','y','z']是否按精确的连续顺序存在于输入列表中。函数的返回规则为:当该序列存在时返回True,不存在时返回False(注:原示例代码中注释掉not是为了便于解释逻辑,实际判断逻辑需匹配返回规则)。
示例代码(仅作逻辑示意)
input_list = ['_','x','y','z','_'] # 注意:Python原生`in`操作符无法直接检查连续子序列,此处仅为逻辑示意 if ['x','y','z'] not in input_list: return True else: return False
期望效果
- 输入列表为
['_','x','y','z','_']时,返回True - 输入列表为
['_','x','y','a','_']时,返回False - 输入列表为
['_','x','z','y','_']时,返回False
正确实现代码
Python原生的in操作符仅能检查单个元素是否在列表中,无法直接判断连续子序列,因此需要手动实现子序列检查逻辑:
def check_xyz_sequence(input_list): # 遍历列表,检查是否存在连续的x、y、z for i in range(len(input_list) - 2): if input_list[i] == 'x' and input_list[i+1] == 'y' and input_list[i+2] == 'z': return True # 未找到符合条件的连续序列 return False
验证用例
# 测试用例1 print(check_xyz_sequence(['_','x','y','z','_'])) # 输出: True # 测试用例2 print(check_xyz_sequence(['_','x','y','a','_'])) # 输出: False # 测试用例3 print(check_xyz_sequence(['_','x','z','y','_'])) # 输出: False
内容的提问来源于stack exchange,提问作者MuteKn0wM0RE
相关产品推荐
相关产品推荐

