Python列表相邻重复元素检测问题:代码返回结果不符合预期
问题分析:判断连续重复餐品的函数错误排查
你的代码存在三个核心问题,导致无法正确输出结果:
- 完全没必要用嵌套循环:题目要求判断连续相邻的餐品重复,只需要逐个检查当前元素和下一个元素即可,嵌套循环会遍历所有非连续的元素对,完全多余。
- 判断逻辑完全错误:你写的
if j == i永远不可能成立——因为j是从i+1开始遍历的,j始终比i大1,这个条件永远为假,函数自然只会返回False。 - 没有比较餐品内容:你只在比较索引值,根本没去检查
meals列表里的餐品是否重复,完全偏离了题目要求。
修正后的代码(基础单循环版本)
def menu_is_boring(meals): # 遍历到倒数第二个元素,避免i+1超出列表索引范围 for i in range(len(meals) - 1): if meals[i] == meals[i+1]: return True return False
更简洁的Python风格写法
利用zip将相邻元素配对,再用any()判断是否存在相等的元素对:
def menu_is_boring(meals): return any(a == b for a, b in zip(meals, meals[1:]))
测试你给出的输入meals=['Spam', 'Eggs', 'Spam', 'Spam', 'Bacon', 'Spam'],两个版本的代码都会正确返回True。
内容的提问来源于stack exchange,提问作者December
相关产品推荐
相关产品推荐

