Python判断列表是否存在相邻3的函数仅首位置生效问题排查
代码错误点说明
- 参数遍历逻辑错误:你使用
*args接收参数后,外层for i in args循环是逐个遍历传入的所有参数,如果你是将整数序列的每个元素作为独立参数传入,i是单个整数,无法执行i[x]索引操作会直接报错;如果你是将整个列表作为单个参数传入,args仅包含1个列表元素,外层循环只会执行1次。 - 内层循环范围错误:这是你仅能识别下标0位置相邻3的核心原因。你写的
range(len(args))取的是args元组的长度,而非待判断整数序列的长度。比如传入长度为4的列表[3,1,3,3]作为参数时,len(args)为1,内层循环只会执行x=0的判断,后续位置完全不会遍历。 - 索引越界风险:即使你修正了循环范围,若直接用序列总长度作为循环上限,当x取到最后一个下标时,x+1会超出序列索引范围触发报错。
- 返回时机错误:内层循环绑定的
else分支会在for循环正常结束后直接返回False,即便后续有符合条件的相邻3也不会继续判断。
修复后代码
调用时传入独立整数参数(如myfunc(1,3,3,2))
def myfunc(*args): # 遍历到倒数第二个元素即可,避免x+1越界 for x in range(len(args)-1): if args[x] == 3 and args[x+1] == 3: return True # 全部遍历完没找到再返回False return False
调用时传入单个列表参数(如myfunc([1,3,3,2]))
def myfunc(nums): for x in range(len(nums)-1): if nums[x] == 3 and nums[x+1] == 3: return True return False
内容的提问来源于stack exchange,提问作者Sarvesh Deshmukh
相关产品推荐
相关产品推荐

