验证判断列表含连续两个3的代码正确性:我的实现vs讲师实现
判断列表中是否存在连续两个3的函数正确性分析
我想要编写一个函数,当输入列表中存在两个连续的3时返回True。我编写了如下代码,但不确定其正确性:
def has_33(my_list): i=0 for j in my_list: if i==j: return True else: i=j return False
我的在线讲师提供了另一个使用索引的解决方案:
def has_33(nums): for i in range(0, len(nums)-1): if nums[i:i+2] == [3,3]: return True return False
你的解决方案是否可行?
不可行。你的代码逻辑是判断列表中是否存在任意两个连续相等的元素,而非专门针对连续的3。比如输入[2,2],你的函数会返回True,但这不符合“只有连续3才返回True”的需求——代码没有限定比较的元素必须是3,只要前后元素相等就触发返回,完全偏离了原本的需求。
讲师的方案是否正确?
完全正确。讲师的代码通过遍历列表的每个有效位置(从0到len(nums)-2,确保能取到两个连续元素),每次截取当前位置和下一个位置的切片nums[i:i+2],判断是否等于[3,3]:
- 一旦找到连续的3,立刻返回
True; - 遍历完整个列表都没找到的话,返回
False。
这个逻辑完全贴合需求,不管输入是空列表、单元素列表、无连续3的列表还是有连续3的列表,都能给出正确结果。
内容的提问来源于stack exchange,提问作者Soumen Mallick
相关产品推荐
相关产品推荐

