Python 仅对列表的一部分进行排名
Python Ranking only part of a list
我希望能够仅对列表的一部分进行排名并忽略该列表中的某些元素。我想忽略 -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]
我希望能够仅对列表的一部分进行排名并忽略该列表中的某些元素。我想忽略 -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]