python - 按顺序排列列表,但删除稍后出现的较低值
问题描述
我有一个看起来像这样的列表:
[5000, 4000, 3500, 4200, 3300]
我想将此列表从高到低排序,但还要删除任何已经被列表中较早出现的较低值“击败”的值。所以上面的列表应该是这样的:
[5000, 4000, 3500, 3300]
我尝试循环遍历列表并将其与其他所有值进行比较,但我迷失在 for 循环中。我想我错过了一些非常明显的东西。
非常感谢任何帮助或其他文章!
解决方案
您可以使用列表推导:
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]
推荐阅读
- css - 基本 CSS - 遵循 DRY 原则,我将如何从我的选择器中删除 display:grid?
- reactjs - 使用 React CDN 导入用户定义的组件,
- react-admin - 如何在 React-Admin 中对列表进行部分应用程序缓存更新?
- indexing - 向量化三维微分;寻找零梯度
- javascript - Expo 应用程序图标未正确显示
- ember.js - 在 Octane 中向 LinkTo 添加额外操作
- c - stat(2) 线程安全吗?
- html - facebook的分享链接不显示我的网址
- android - IllegalArgumentException 访问画廊视频 URI
- c# - Akavache 和 collectionChanged 事件