python - 查找列表的前 3 个最大值并将其位置保留在 Python 中的另一个列表中?
问题描述
我正在为我的 uni 论文用 Python 构建一个程序,我正在尝试找到一种方法来从带有浮点数的列表中找到前 3 个最大数字,这样我就可以将它们的位置保留在另一个列表中以供将来处理。
`maxim=max(listScore)
`i=0
`keep = [-1]*num
`for x in range(0,num):
````if listaScore[x]==maxim:
`````````keep[i]=x
`````````i+=1
`````````listScore[x]=-100
````maxim=max(listaScore)
the results i want is :
listScore=[0.25, 0.5, 0.5, -0.25, -0.25, 0.25]
positions=[1,2,5,-1,-1,-1]
解决方案
这是使用列表推导的一种方法。这个想法是与列表sort
的range
长度相同,指定我们要从key
参数中的列表中获取元素。我们得到的是排序后的结果range
,以返回对列表进行排序的索引:
l= [0.25, 0.5, 0.5, -0.25, -0.25, 0.25]
out = [i for i in sorted(range(len(l)), key=l.__getitem__, reverse=True)][:3]
# [1, 2, 0]
如果你想要额外的-1s
:
out + [-1] * (len(l) - len(out))
# [1, 2, 0, -1, -1, -1]
推荐阅读
- python-3.x - 循环遍历数据框以搜索子字符串并更改大表上的列
- node.js - 在 NodeJs 中检索 Azure 环境变量
- javascript - Nuxt:每个会话显示一次启动动画
- react-native - 当标签比屏幕宽度更拟合时,提供一个react Antive Tabnavigator的溢出菜单
- java - 如何将链接存储到速度变量中并在 html 中显示?
- android - 在 webview 中下载文件返回错误数据
- javascript - React TypeScript:关键系统
- r - 分别为每个 df 运行一个 lm 模型
- c# - 反射以获取类中类属性的值
- reactjs - 如何在玩笑中使用 File.text()?