pythonの、リスト(list)のソート方法を紹介します。
昇順・降順の切り替え方法、文字列のアルファベット順でのソート方法なども、サンプルコードを交えながら1つずつ紹介しています。
本記事では、下記の内容を紹介しています。
この記事で分かること
- sortメソッド : 元のリストをソートする
- sorted関数 : リストをソートし、新たなリストを生成
- 数値を降順でソート
- 数値を絶対値でソート
- 文字列のソート
スポンサーリンク
sortメソッド : 元のリストをソートする
sortメソッドを用いることで、元のリストをソートできます。
破壊的処理であるため、ソート前のリストが書き換えられます。
書き方
リスト.sort( key=None, reverse=False )
" key=None, reverse=False " の部分は、オプション指定であり、省略可能です。
最も簡潔な記述は、リスト.sort( ) となります。
" key=None, reverse=False "の部分については、
記事の後半で、使い方を紹介します。
以下、サンプルコードです。
### sortのサンプルコード(昇順)
num_list = [41, 52, 15, 38, 22]
num_list.sort()
print(num_list)
# [15, 22, 38, 41, 52]
sorted関数 : リストをソートし、新たなリストを生成
sorted関数を用いることで、リストをソートできます。
非破壊的処理であるため、ソート前のリストを保持したまま、ソート後のリストを返します。
書き方
ソート後のリスト = sorted( リスト, key=None, reverse=False )
以下、サンプルコードです。
### sortedのサンプルコード
num_list = [41, 52, 15, 38, 22]
new_num_list = sorted(num_list)
print(num_list)
# [41, 52, 15, 38, 22]
print(new_num_list)
# [15, 22, 38, 41, 52]
スポンサーリンク
リスト(list)を降順でソート
sortメソッド、sorted関数ともに、" reverse=True "とすることで、降順でソートできます。
sortメソッドの場合
書き方
リスト.sort( key=None, reverse=True )
sorted関数の場合
書き方
ソート後のリスト = sorted( リスト, key=None, reverse=True )
以下、サンプルコードです。
### sortのサンプルコード(降順)
num_list = [41, 52, 15, 38, 22]
num_list.sort(reverse=True)
print(num_list)
# [52, 41, 38, 22, 15]
### sortedのサンプルコード(降順)
num_list = [41, 52, 15, 38, 22]
new_num_list = sorted(num_list, reverse=True)
print(num_list)
# [41, 52, 15, 38, 22]
print(new_num_list)
# [52, 41, 38, 22, 15]
リスト(list)を絶対値でソート
sortメソッド、sorted関数の 引数keyに、絶対値を返す組み込み関数であるabs()を指定することで、絶対値でソートできます。
sortメソッドの場合
書き方
リスト.sort( key=abs, reverse=False )
sorted関数の場合
書き方
ソート後のリスト = sorted( リスト, key=abs, reverse=False )
以下、サンプルコードです。
### sortメソッドでの絶対値ソートのサンプルコード
num_list = [41, -52, 15, 38, -22]
num_list.sort(key=abs)
print(num_list)
# [15, -22, 38, 41, -52]
### sorted関数での絶対値ソートのサンプルコード
num_list = [41, -52, 15, 38, -22]
new_num_list = sorted(num_list, key=abs)
print(num_list)
# [41, 52, 15, 38, 22]
print(new_num_list)
# [15, -22, 38, 41, -52]
スポンサーリンク
文字列のソート
文字列もsortメソッド、sorted関数でソートできます。
文字列をアルファベット順にソートする場合
sortメソッド、sorted関数ともに、
文字列の要素を持つリストを引数として渡すだけで、アルファベット順にソートできます。
以下、サンプルコードです。
### sortメソッドで、文字列をソートするサンプルコード
fruits = ["Banana", "Orange", "Apple"]
fruits.sort()
print(fruits)
# ['Apple', 'Banana', 'Orange']
### sorted関数で、文字列をソートするサンプルコード
fruits = ["Banana", "Orange", "Apple"]
sort_fruits = sorted(fruits)
print(sort_fruits)
# ['Apple', 'Banana', 'Orange']
文字列型の数値をソートする場合
文字列型の場合でも、ゼロ埋めされた数字であれば、引数に渡すだけでソートできます。
以下、サンプルコードです。
### sortメソッドでゼロ埋めされた数字をソートするサンプルコード
num_list = ['130', '002', '017']
num_list.sort()
print(num_list)
# ['002', '017', '130']
### sorted関数でゼロ埋めされた数字をソートするサンプルコード
num_list = ['130', '002', '017']
new_num_list = sorted(num_list)
print(new_num_list)
# ['002', '017', '130']
ゼロ埋めされていない、文字列型の数字の場合は、
"key = int" を渡すことで比較時にint型に変換されるので、ソートできるようになります。
### ゼロ埋めされていない文字列型の数字は、正しくソートされない
num_list = ['130', '2', '17']
num_list.sort()
print(num_list)
# ['130', '17', '2']
### key=intを指定すると正しくソートされる
num_list = ['130', '2', '17']
num_list.sort(key=int)
print(num_list)
# ['2', '17', '130']
文字列の長さでソート
sortメソッド、sorted関数の 引数keyに、文字列の長さを返す組み込み関数であるlen()を指定することで、リスト内の要素を文字列の長さでソートできます。
sortメソッドの場合
書き方
リスト.sort( key=len, reverse=False )
sorted関数の場合
書き方
ソート後のリスト = sorted( リスト, key=len, reverse=False )
以下、サンプルコードです。
### sortメソッドで文字列の長さでソートするサンプルコード
fruits = ["Banana", "Plum", "Apple"]
fruits.sort(key=len)
print(fruits)
# ['Plum', 'Apple', 'Banana']
### sorted関数で文字列の長さでソートするサンプルコード
fruits = ["Banana", "Plum", "Apple"]
new_fluits = sorted(fruits, key=len)
print(new_fluits)
# ['Plum', 'Apple', 'Banana']
スポンサーリンク
まとめ
pythonのリスト(list)のソート方法について、例題を交えて紹介しました。
リストを扱う上でソートは避けては通れませんので、sortメソッド、sorted関数の基本的な使い方は理解しておきましょう。
スポンサーリンク