Pythonのリストをソートする方法について書いています。
ソートはリスト内の要素を、小さい順や大きい順などに並び替えることです。
Pythonのリストをソートする時にはsorted関数を使うか、リストからsortメソッドを呼ぶことでソートすることができます。
載せているコードはPythonのバージョン3.11.0で確認しました。
sorted関数でソートする
Pythonのリストはsorted関数を使うことでソートできます。
例えば、下記のようにソートすることができます。
numbers = [10, 20, 7, 18, 13, 1]
sortNumbers = sorted(numbers)
print(sortNumbers) # [1, 7, 10, 13, 18, 20]
最初にnumbers変数に数値のリストを代入しています。
次の処理で、リストをソートしています。ソートに使っているのはsorted関数です。
sorted関数にソートしたいリストを渡すとソートしてくれます。
sorted関数の返り値として、ソートされたリストが返ってきます。
リストだけを引数に渡した場合には、昇順でリストがソートされます。
結果をsortNumbers変数で受け取っています。
print関数で出力すると、リストの中身が「[1, 7, 10, 13, 18, 20]
」となって、昇順でソートされたことが確認できました。
降順でソートする
降順でソートしたい時には、名前付き引数のreverseにTrueを設定します。
例えば、先ほどのプログラムを修正してみます。
numbers = [10, 20, 7, 18, 13, 1]
sortNumbers = sorted(numbers, reverse=True)
print(sortNumbers) # [20, 18, 13, 10, 7, 1]
sorted関数に渡している引数を増やして、reverseにTrueを設定して渡すようにしました。
こうすることで、降順にソートしてくれます。
print関数で出力すると、リストの中身が「[20, 18, 13, 10, 7, 1]
」となりました。
降順でソートされました。
英語文字列をソートする
文字列も同じようにsorted関数でソートできます。
例えば、下記のように使います。
fruits = ['apple', 'orange', 'banana', 'grape', 'peach']
sortFruits = sorted(fruits)
print(sortFruits) # ['apple', 'banana', 'grape', 'orange', 'peach']
最初にfruits変数に、英語の果物名のリストを作りました。
次の行でsorted関数を使って、ソートした内容を返しています。
print関数で確認すると「['apple', 'banana', 'grape', 'orange', 'peach']
」となっています。
アルファベットの昇順に並んでいることが確認できました。
降順にするときは、先ほどと同じようにreverse
にTrueを設定します。
日本語もソートできる
ひらがなのソートを試してみました。
foods = ['いちご', 'おれんじ', 'あいす', 'うどん', 'えだまめ']
sortFoods = sorted(foods)
print(sortFoods) # ['あいす', 'いちご', 'うどん', 'えだまめ', 'おれんじ']
foods変数に、食べ物名のリストを作って代入しています。
次の行でsorted関数を使って、foodsリストをソートしています。
print関数で確認すると「['あいす', 'いちご', 'うどん', 'えだまめ', 'おれんじ']
」となっています。
ひらがなでも昇順に並ぶことが確認できました。
こちらもreverse
にTrueを設定することで、ひらがなの降順で並び替えできます。
sortメソッドでソートする
リストから呼び出したsortメソッドを使うことでも、リストの値をソートすることができます。
例えば、下記のように使うことができます。
numbers = [22, 33, 1, 18, 13, 25]
numbers.sort()
print(numbers) # [1, 13, 18, 22, 25, 33]
最初に、数値のリストをnumbers変数に代入して作成しました。
次の処理で、作成したリストからsortメソッドを呼び出しています。
これで、昇順にソートされます。
sortメソッドでは返り値はなく、呼び出し元のリストの内容がソートされます。
print関数で確認すると「[1, 13, 18, 22, 25, 33]」
となりました。
ソートされたことが確認できました。
降順でソートする
sortメソッドで降順にソートしたいときには、名前付き引数のreverse
にTrueを設定して渡します。
sorted関数と同じですね。下記のように使うことができます。
numbers = [22, 33, 1, 18, 13, 25]
numbers.sort(reverse=True)
print(numbers) # [33, 25, 22, 18, 13, 1]
先ほどのプログラムのsortメソッドに、reverseを設定してTrueを渡しました。
print関数で確認すると「[33, 25, 22, 18, 13, 1]」
となりました。
降順にソートされましたね。
sortメソッドでも「アルファベット」や「ひらがな」でもsorted関数と同じようにソートすることが可能です。
Pythonのリストのソートを確認して
今回はPythonでリストをソートする方法について確認しました。
まとめると、下記になります。
・sorted関数とsortメソッド、どちらもデフォルトでは昇順でソートされる。
・sorted関数とsortメソッド、どちらもreverseを設定することで降順になる。
・sorted関数は新しくソートしたリストを返す。
・sortメソッドは呼び出し元のリストをソートする。返り値はなし。
基本的にはsortメソッドの方が簡単に呼び出せるので、こちらでソートする方が良いかと思います。
元のリストを変えずに、新しくソートされたリストが欲しいときには、sorted関数を使うと良いのではないでしょうか。
コメント