Python仅排名列表的一部分

时间:2016-12-12 04:05:43

标签: 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]

1 个答案:

答案 0 :(得分:1)

您可以在列表推导中添加条件语句,如下所示:

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