今回はPythonで配列をソートする方法を解説します。
配列の数値を昇順や降順に並べる方法です。
実はPythonでソートする方法には、2種類あります。
2種類はやり方が微妙に異なっているため、初学者の中には使い方がごっちゃになる人が多いです。
そこで本記事では、2種類のやり方を分けて解説していきます。
Pythonで配列をソートする方法
Pythonで配列をソートする方法を以下の項目に分けて解説します。
- 配列を昇順にソート(sortメソッド)
- 配列を降順にソート(sortメソッド)
- 配列を昇順にソート(sorted関数)
- 配列を降順にソート(sorted関数)
ソートする場合、「sortメソッド」を使う方法と「sorted関数」を使う方法があります。
それらを順番に解説していきます。
なお、配列が良くわからないという方は、【入門編5】Pythonで複数データ(リスト)を扱ってみようを参考にしてください。
配列を昇順にソート(sortメソッド)
sortedメソッドを使い、配列を昇順(1、2、3……)に並べ替える方法を解説します。
○コード例
numbers = [7,8,2,12,3]
numbers.sort()
print(numbers)
○実行結果

numbersという配列に対しsortメソッドを使っています。
メソッドを使う場合は、「変数名.メソッド名()」と書くのが基本です。
ソートされた結果、「2、3、7、8、12」となっていますね。
配列を降順にソート(sortメソッド)
続いて、配列を降順(3、2、1……)に並べ替える方法を解説します。
○コード例
numbers = [7,8,2,12,3]
numbers.sort(reverse=True)
print(numbers)
○実行結果

先程同様sortメソッドを使います。
降順にする場合は()の中に「reverse=True」と記述する必要があります。
こうすることで、降順にソートすることが可能です。
配列を昇順にソート(sorted関数)
今度はsorted関数を使ったやり方をみていきましょう。
関数ではなくメソッドを使ったやり方です。
関数って何?という方は【入門編10】Pythonの代表的な組み込み関数を使ってみようをお読み頂けると良いでしょう。
○コード例
numbers = [7,8,2,12,3]
print(sorted(numbers))
○実行結果

sorted関数で配列を昇順に並べ替えるには、上記のようにします。
sorted関数の()内に並べ替えたい配列を入れればOKです。
これで、sortメソッドと同じようにソートができます。
配列を降順にソート(sorted関数)
続いて、配列を降順にソートするやり方です。
○コード例
numbers = [7,8,2,12,3]
print(sorted(numbers, reverse=True))
○実行結果

sortes関数の第二引数に「reverse=True」を入れます。
こうすることで、配列を降順にソートすることが可能です。
以上がPythonにおけるソートの基本となります。
Pythonで文字列をソートする方法
続いてPythonで文字列をソートするやり方をみていきましょう。
以下の項目に分けて解説します。
- 文字列を昇順にソート
- 文字列を降順にソート
文字列を昇順にソート
文字列を昇順にソートするやり方です。
○コード例
text = 'ecabd'
list = sorted(text)
print(''.join(list))
○実行結果

文字列をソートする場合sorted関数を使います。
ただし、注意点があります。
sorted関数で文字列をソートすると、配列になっていまいます。
そこで上記ではjoin関数を使うことで、文字列へと戻しているのです。
文字列を降順にソート
文字列を降順にソートする場合もやり方は同じです。
○コード例
text = 'ecabd'
list = sorted(text, reverse=True)
print(''.join(list))
○実行結果

sorted関数の第二引数に「reverse=True」を入れ、join関数で文字列に戻せば完了です。
その他Pythonの様々なソート
その他、Pythonの様々なソートについてみていきましょう。
- タプルをソート
- 文字列の長さ順にソート
- 大文字小文字区別なくソート
タプルをソート
タプルは要素を追加、削除することができないため、ソートも同じくできません。
しかしsorted関数を使うことで、タプルを配列に変えてソートはできることを覚えておきましょう。
○コード例
numbers = (7,8,2,12,3)
print(sorted(numbers))
print(sorted(numbers, reverse=True))
○実行結果

上記のコードではタプルを配列にして、降順に並べ替えています。
文字列の長さ順にソート
文字列の長さ順にソートすることも可能です。
○コード例
fruit = ['banana', 'apple', 'watermelon', 'yuzu']
fruit.sort(key=len)
print(fruit)
○実行結果

上記ではfruit配列を、文字列を長さ順にソートしています。
長さ順にソートする場合sortメソッドの引数に「key=len」を指定します。
この引数を指定することで、長さ順にソートできるのです。
大文字小文字区別なくソート
最後に大文字小文字区別なくソートする方法をみていきましょう。
○コード例
data = ['G', 'a', 'E', 'd', 'c']
data.sort(key=str.lower)
print(data)
○実行結果

sortメソッドの引数に「key=str.lower」を指定していますね。
この引数を使うことで、大文字を小文字扱いしてソートしてくれます。
まとめ
本記事ではPythonで配列をソートする方法を解説しました。
一口にソートと言っても、様々な方法があることがお分かり頂けたかと思います。
sortメソッドを使うべきかsorted関数を使うべきかは、好みや状況に応じて使い分けるのが良いでしょう。
余裕があれば、本記事で解説したコードを修正して、色々なソートを試してみてくださいね。
次回は、Pythonでファイルを作成したり削除したりする方法の解説です。