2017-01-24 9 views
-2

でのサイズに応じて順位の値は、私はPythonでリストを持っていると言う:Pythonの - 別の配列

numArray = [3.7, 1, 7.2, 5] 

そして、私はそれでnumArray内のすべての対応する要素のランクを持っている別のリストを作成したいです。

rank = [3,4,1,2] 

3.7は、リストの3番目の最大の数であるので、配列内のすべての要素に対して行われる3次のランクを持っている:それはたいと思います。配列には文字列やその他のデータ型ではなく数値のみが含まれているとします。

私の思考プロセスは今です:

1)()はlist.sortを使用してにそれらを並べ替える別の配列

2)に要素をコピー - 今、私は少なくともから

最大に値を持っています

ソートされたリストに基づいて要素ランクを関連付けることができません。

ありがとう!

+0

あなた自身でこれを解決するための*努力を実証することはできますか? –

+0

ようこそStackOverflowへ。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [on topic](http://stackoverflow.com/help/on-topic)および[How to Ask](http://stackoverflow.com/help/how-to-ask)をここで適用してください。 StackOverflowは、コーディングまたはチュートリアルサービスではありません。 – Prune

+0

リストがソートされている場合、その値はそのインデックスのインデックスによって決定されるので、重複がないと仮定して '.index'メソッドを使うことができます。実際の問題は何ですか? –

答えて

1

ないクリーン/ "神託" ソリューションが、その間に、それは仕事をする必要があります。

numArray = [3.7, 1, 7.2, 5] 
rank = [] 
for i in numArray: 
    rank.append(sorted(numArray)[::-1].index(i)+1) 

print rank # [3, 4, 1, 2] 

更新: ここでワンライナーだ:

rank = [numArray.index(i)+1 for i in sorted(numArray)[::-1]] 
0

あなた'LL値をランク付けするための数値のマッピングを作成する必要があります。元のリストを反復処理し、各数値のランク値を検索することができます。

num_list = [3.7, 1, 7.2, 5] 
num_ranks = dict(zip(sorted(num_list, reverse=True), range(1, len(num_list)+1))) 
rank = [num_ranks[v] for v in num_list]