首页 > 解决方案 > 按顺序排列列表,但删除稍后出现的较低值

问题描述

我有一个看起来像这样的列表:

[5000, 4000, 3500, 4200, 3300]

我想将此列表从高到低排序,但还要删除任何已经被列表中较早出现的较低值“击败”的值。所以上面的列表应该是这样的:

[5000, 4000, 3500, 3300]

我尝试循环遍历列表并将其与其他所有值进行比较,但我迷失在 for 循环中。我想我错过了一些非常明显的东西。

非常感谢任何帮助或其他文章!

标签: pythonlistloops

解决方案


您可以使用列表推导:

d = [5000, 4000, 3500, 4200, 3300]
new_d = [a for i, a in enumerate(d) if not i or d[i-1] > a]

输出:

[5000, 4000, 3500, 3300]

推荐阅读