Python查找两个列表首次不等位置索引的代码异常排查
问题排查
- 无输出原因:你没有显式调用
diff_index函数并打印返回结果,执行代码自然不会输出内容,需要补充函数调用与打印语句。 - 逻辑缺陷:现有代码仅对比了两个列表长度重合部分的元素,当短列表所有元素与长列表对应位置完全相等时(比如你的测试用例
a0和a1),会错误返回-1,该场景下首次不相等的索引应为短列表的长度值。
修复后代码
from typing import List a0: List[int] = [1, 2] a1: List[int] = [1, 2, 3, 4, 5] a2: List[int] = [1, 2, 33, 4, 5] def diff_index(l1: list, l2: list) -> int: min_len = min(len(l1), len(l2)) # 遍历公共长度部分找第一个差异 for i in range(min_len): if l1[i] != l2[i]: return i # 公共长度部分无差异时,长度不同则返回短列表长度,否则返回-1表示完全一致 return min_len if len(l1) != len(l2) else -1 # 测试调用 print(diff_index(a0, a1)) # 输出2 print(diff_index(a1, a2)) # 输出2 print(diff_index(a1, a1)) # 输出-1
逻辑说明
修复后的代码覆盖了所有边界场景:
- 两个列表完全相等:返回-1
- 公共长度范围内存在差异:返回第一个差异的索引值
- 公共长度范围完全一致但长度不同:返回较短列表的长度作为首次差异索引
内容的提问来源于stack exchange,提问作者Osmani
相关产品推荐
相关产品推荐

