Python 仅对列表的一部分进行排名

标签 python ranking

我希望能够仅对列表的一部分进行排名并忽略该列表中的某些元素。我想忽略 -999 的元素并对不是从高到低的元素进行排名。

例如:

test_cut = [0.18677649597722776, 0.21992417009282958, 0.21001370207789635, -999, -999, -999]

我想要得到[3,1,2,0,0,0]的结果

但是如果我这样做,它也会对 -999 进行排名,我希望它的值为 0。

[sorted(test_cut, reverse=True).index(i) + 1 for i in test_cut]

输出:

[3, 1, 2, 4, 4, 4]

最佳答案

您可以在列表理解中放置条件语句,如下所示:

[sorted(test_cut, reverse=True).index(i) + 1 if i != -999 else 0 for i in test_cut]

关于Python 仅对列表的一部分进行排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41094062/

相关文章:

google-analytics - 如何使用google-analytics-spreadsheet-add-on跟踪排名

ruby - 如何使用 View 和创建日期以及点赞数对对象进行排名?

python - 在 python 上,如何在加入 float 列表后去掉引号?

python - 添加列表直到总和匹配

Mysql - 获取用户上下5行(排名)

algorithm - 基于比较的排名算法

python - 如何跟踪玩家的排名?

python - 在 Python 中打印进度条处理

python - Django - ManyToManyField 未显示在表单中

python - Django - 单击按钮调用 View ,不传递任何信息