リスト 文法・環境 組み込み関数

【python】リスト(list)のソート方法(昇順、降順、文字列の要素の長さ順など)【sort、sorted】

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関数の基本的な使い方は理解しておきましょう。

スポンサーリンク

-リスト, 文法・環境, 組み込み関数
-, ,