Python for循环中list.index()返回重复索引问题原因求解
索引错误产生原因
你遇到的输出索引不符合预期的问题,是Python内置list.index()方法的特性导致的:list.index(目标值)的查找规则是从列表头部开始遍历,返回第一个和目标值相等的元素的下标,不会返回你当前遍历位置对应元素的真实索引。
你的测试输入中前两条的分数分别是37.21和37.210,按照浮点数的运算规则这两个值完全相等,所以分数列表s的前两位元素值完全相同:
- 遍历到下标为0的元素时,
s.index(s[0])查找第一个等于37.21的元素,返回0,符合预期 - 遍历到下标为1的元素时,
s.index(s[1])仍然查找第一个等于37.21的元素,还是返回0,这就是你输出的索引序列第二位为0的直接原因。
其他潜在问题
你当前代码还存在逻辑错误:在计算第二低分的判断分支中,你写的max!=s[i]里的max是Python内置函数,不是你之前定义的变量mx,会导致第二低分的计算结果出错。
如果需要获取遍历过程中当前元素的真实索引,直接使用循环变量i即可,不需要额外调用index()方法查找。
内容的提问来源于stack exchange,提问作者Razak
相关产品推荐
相关产品推荐

