You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python嵌套列表问题:为何无法移除所有最低分值元素?

问题:移除列表中所有最低分元素的代码未达预期效果

我的代码

if __name__ == '__main__':
    records = []
    smallest = 0
    fat = int(input())
    for x in range(fat):
        name = input()
        score = float(input())
        records.append([name, score])
    records.sort(key=lambda x:x[1])
    print(records)
    for i in range(len(records)-3):
        if records[i][1] <= records[i+1][1]:
            del records[i]
        else:
            ''
print(records)

输入内容

6
Jorge
3
Mia
3
Gus
5
Myles
4
Gerald
9
Fred
8

当前输出

[['Mia', 3.0], ['Gus', 5.0], ['Gerald', 9.0]]

我需要移除列表中所有分值最低的元素,但代码未实现预期效果,请问原因是什么?


问题分析及原因

1. 遍历逻辑完全偏离需求

你写的for i in range(len(records)-3)是固定次数的循环(输入6条数据时仅循环3次),和“移除所有最低分元素”的目标毫无关联。而且在遍历列表时直接删除元素会导致索引混乱:比如删除第0个元素后,原第1个元素会变成新的第0个,但循环的i会继续递增,直接跳过了这个元素,无法处理所有同分值项。

2. 判断条件无法识别最低分

records[i][1] <= records[i+1][1]这个相邻元素比较的逻辑,不能用来定位所有最低分元素。排序后最低分集中在列表最前端,正确的思路应该是先提取最低分的数值,再批量移除所有等于该分值的元素,而非拿相邻项做比较。

3. 代码结构存在不规范问题

最后一行print(records)不在if __name__ == '__main__':的缩进块内,虽然不影响当前功能,但属于不符合Python规范的写法。


内容的提问来源于stack exchange,提问作者Ski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:55:16