【python】listのソートはsorted関数が便利です
pythonのlistをsortする方法を調べる人
「pythonでlistをsortしたいのですが、どのように記述すればいいでしょう。そもそもlistってどのようなデータを入れられましたっけ?あと具体的な例として、コピペできるソースコードも欲しいです。」
こんな疑問を解決します。
本記事の内容
- 1.pythonにおけるlistとは
- 2.listをsortする
- 3.好きな順序に並べ替える
この記事を書いている私はIT業界歴12年、年収1,000万円ちょっとの金融系エンジニアです。学生時代から様々なプログラミング言語を扱ってきましたが、その中でもpythonはとても扱いやすく生産性も高く、オススメの言語です。
本記事では、細かい構文に迷ったら、例からコピー&ペーストして使えることも目指しました。少しでもお役に立てますと幸いです。
1.pythonにおけるlistとは
listとは、pythonにおける基本的なデータ構造の一つ。要素を一列に並べて管理します。中身は文字列でも整数でも混在していても問題ありません。
listの種類(整数list,文字列list,混在したlist)
>>> #整数のlist >>> [2, 4, 5, 3, 1] [2, 4, 5, 3, 1] >>> #文字列のlist >>> ['c', 'b', 'a'] ['c', 'b', 'a'] >>> #整数と文字列の混在list >>> [1, 'x'] [1, 'x'] >>> #整数リストのリスト >>> [[9,9],[1,9,1],[2,5],[3,0]] [[9, 9], [1, 9, 1], [2, 5], [3, 0]]
2.listをsortする
sorted関数を用いてリストをソートします。
>>> #整数のリストを大きさ順に並べる >>> sorted([2, 4, 5, 3, 1]) [1, 2, 3, 4, 5] >>> #文字列リストを辞書順に並べる >>> sorted(['cookie', 'box', 'apple']) ['apple', 'box', 'cookie'] >>> #文字列リストを辞書の逆順に並べる >>> sorted(['cookie', 'box', 'apple'],reverse=True) ['cookie', 'box', 'apple']
整数と文字列の混在リストにsorted()を使うとエラーになります
>>> #整数と文字列の混在リストにソートするとエラーになる >>> sorted(['x',1]) Traceback (most recent call last): File "", line 1, in TypeError: '<' not supported between instances of 'str' and 'int'
sorted関数は定められた順序によって並び替えを行いますが、文字列型と整数型では順序のルールが異なるため、比較できずにエラーとなってしまいます。
sorted()を使うとlist以外のデータもソートできます
>>> #tupleのソート >>> sorted((5,1,3)) [1, 3, 5] >>> #文字列を文字のリストと見なしてソートする >>> sorted('Hello,world') [',', 'H', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r', 'w']
3.好きな順序に並べ替える
数値と文字列が混在するケースでも、文字列とみなして並び替えをすればエラーになりません。sortedの引数でkey=str
を指定します。
>>> #整数と文字列の混在リストの各要素にstr関数を適用し、文字列として辞書順に並び替える >>> sorted(['x',1],key=str) [1, 'x']
他の順序で並び替えます。
>>> #絶対値の大きさ順に並べる >>> sorted([-2,-1,0,1,2],key=abs) [0, -1, 1, -2, 2] >>> #文字の長さ順に並べる >>> sorted(['cookie', 'box', 'apple'],key=len) ['box', 'apple', 'cookie'] >>> #各リストの合計値の大きさ順に並べる >>> sorted([[9,9],[1,9,1],[2,5],[3,0]],key=sum) [[3, 0], [2, 5], [1, 9, 1], [9, 9]] >>> #各リストの最初の要素の大きさ順に並べ替える >>> sorted([[9,9],[1,9,1],[2,5],[3,0]],key=lambda x:x[0]) [[1, 9, 1], [2, 5], [3, 0], [9, 9]] >>> #各リストの2番目の要素の大きさ順の逆順に並べ替える >>> sorted([[9,9],[1,9,1],[2,5],[3,0]],key=lambda x:x[1]*-1) [[9, 9], [1, 9, 1], [2, 5], [3, 0]]
なお、lambda式については次の記事を参照ください。
参考:【python】ラムダ式(lambda)を完全マスターする
今回は以上です。pythonでlistをソートする方法について紹介しました。参考になりますと幸いです。
|python利用企業ランキング2020
Pythonエンジニア求人の特徴
Pythonエンジニア|求人企業ランキング
当ランキング利用上の注意点