40
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Python】2次元配列を二番目の要素に注目して降順にソートする

Last updated at Posted at 2019-07-01

#はじめに
自分が忘れないように書き留めたものです。
n番目の要素に着目してソートするのは知らない人は苦労するかも?と思って記事にしてみました。
ついでにsortedにおける降順ソートのやり方も紹介してます。

#コード

li = [[1,4,3],[2,3,4],[3,4,5],[4,5,6],[2,3,4],[1,5,3],[2,3,4],[5,6,7]]
li = sorted(li, reverse=True, key=lambda x: x[1])  #[1]に注目してソート
print(li)

keyにlambdaを使って関数を渡しているところがポイントです。key関数が示すのはリストの各要素に対して行う前処理です。
上記の例でいえば、[1,4,3]という0番目の要素をkey関数に渡し、仮引数xで受け取ります。その後、x[1]すなわち[1,4,3]の内の4を返す処理を行います。この返ってきた値をソートの基準として用います。
これを全ての要素について行うことで、2番目の要素を用いた並べ替えが実行出来るわけです。
また、reverse = Trueとすることで降順ソートも実現しています。

#実行結果

[[5, 6, 7], [4, 5, 6], [1, 5, 3], [1, 4, 3], [3, 4, 5], [2, 3, 4], [2, 3, 4], [2, 3, 4]]

#結論
結構簡単です。
他にもkey関数でやれることは色々あるので知りたい方はこちらの公式ドキュメントをご覧ください。
凄くわかりやすいと思います。

40
26
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?