Python新手求助:如何编写函数查找列表中连续的7、8、9组合
问题解决:查找列表中的连续7、8、9组合
你的代码存在两个关键问题:
- 每次循环仅取出单个元素
n[loop]与[7,8,9]对比,单个数值不可能等于包含三个元素的列表,这永远无法匹配成功。 - 循环第一次执行时,只要当前元素不匹配就直接
return False,函数直接终止,根本没机会检查后续元素。
修正思路:遍历列表时,每次取连续三个元素的切片和目标组合对比,遍历范围需控制在len(n)-2(避免索引越界),只有当所有位置都检查完毕仍无匹配时,才返回False。
修正后的代码
def check_sequence(n): # 遍历到列表倒数第三个元素即可,防止切片越界 for i in range(len(n) - 2): # 取当前索引开始的连续三个元素 if n[i:i+3] == [7,8,9]: return True # 所有位置都检查完无匹配,返回False return False print(check_sequence([1000,10,11,34,67,89,334,5567,6534,765,2,3,5,6,112,7,8,9,11111]))
另一种简洁写法
利用zip批量获取连续三个元素进行判断:
def check_sequence(n): for a, b, c in zip(n, n[1:], n[2:]): if a ==7 and b ==8 and c ==9: return True return False
内容的提问来源于stack exchange,提问作者grunner
相关产品推荐
相关产品推荐

