28

だから私はこれらの2つのリストを持っています:

score = [350, 914, 569, 223, 947, 284, 567, 333, 697, 245, 227, 785, 120, 794, 343, 773, 293, 995]
name = [Ryan, Stacy, Jenna, Peter, Sophie, Bryan, Cole, Andrea, Emily, Blake, Mike, Stephan, Rob, Eliza, Heather, Daniel, Elisabeth, Samantha]

新しいリストを作成できるように、3 つの最高スコアを見つけて、これらのスコアを名前リストのそれぞれのスコアラーと集計する必要があります。

top3score = [947, 995, 914]
top3name = [Sophie, Samantha, Stacy]

インデックスを使用してこれらのスコアを名前で集計するよりも、最高スコアにインデックスを付けてリストに追加することを考えています。

私の質問は、リスト内の上位 3 つの値にどのようにインデックスを付けるのですか? 次に、インデックスを使用して名前リストで得点者の名前を検索し、top3name リストに追加できるようにするにはどうすればよいですか?

4

3 に答える 3

42

これでいけると思います

sorted(zip(score, name), reverse=True)[:3]

だからあなたは何が起こっているのか理解しています:

zip : iterable を引数として取り、各 iterable から 1 つの要素を取り、それらをタプルに配置します。

そう:

>>> zip(score, name)
[(350, 'Ryan'), (914, 'Stacy'), (569, 'Jenna'), (223, 'Peter'), (947, 'Sophie'), (284, 'Bryan'), (567, 'Cole'), (333, 'Andrea'), (697, 'Emily'), (245, 'Blake'), (227, 'Mike'), (785, 'Stephan'), (120, 'Rob'), (794, 'Eliza'), (343, 'Heather'), (773, 'Daniel'), (293, 'Elisabeth'), (995, 'Samantha')]

sorted : データをソートします。デフォルトでは、タプル要素は 0 インデックスの要素でソートされるため、この場合のスコア. Reverse=True は最初に降順でソートします。

そして最後に[:3]is スライス表記で、最初から 3 番目の要素まですべての要素を教えてください。これは、次のように書くこともできます。[0:3]

于 2012-04-14T08:21:33.760 に答える