Pythonのリストをソートする2つの方法!(sort, sorted)

Python Python

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メソッド、どちらもデフォルトでは昇順でソートされる。
・sorted関数とsortメソッド、どちらもreverseを設定することで降順になる。
・sorted関数は新しくソートしたリストを返す。
・sortメソッドは呼び出し元のリストをソートする。返り値はなし。

基本的にはsortメソッドの方が簡単に呼び出せるので、こちらでソートする方が良いかと思います。
元のリストを変えずに、新しくソートされたリストが欲しいときには、sorted関数を使うと良いのではないでしょうか。

コメント

タイトルとURLをコピーしました