Python函数reversed_list逻辑错误排查:返回结果不符合预期
问题分析:reversed_list函数错误原因
先看原函数代码:
def reversed_list(lst1, lst2): for index in range(len(lst1)): if lst1[index] != lst2[len(lst2) - 1- index]: return False else: return True
核心错误
函数在第一次循环迭代时就直接返回结果,没有完成所有元素的对比:
- 只要第一个位置的元素相等,就立刻返回
True,后续元素的对比完全没执行;如果第一个元素不等,就返回False。 - 对应测试用例
reversed_list([1,5,3], [3,2,1]),第一次对比lst1[0] = 1和lst2[2] = 1,相等就直接返回True,根本没检查lst1[1]与lst2[1](5 vs 2)、lst1[2]与lst2[0](3 vs 3)这两组元素。
修复方案
只有当所有元素对比完成且全部相等时,才返回True;只要有一组元素不相等,就立即返回False。同时建议先判断两个列表长度是否一致(长度不同不可能互为逆序):
def reversed_list(lst1, lst2): if len(lst1) != len(lst2): return False for index in range(len(lst1)): if lst1[index] != lst2[len(lst2) - 1 - index]: return False return True
测试验证
运行测试代码:
print(reversed_list([1, 2, 3], [3, 2, 1])) # 输出True print(reversed_list([1, 5, 3], [3, 2, 1])) # 输出False
结果符合预期。
内容的提问来源于stack exchange,提问作者Bohdan
相关产品推荐
相关产品推荐

