テクノロジー 開発 非公開: Python でリストを並べ替える方法

Python でリストを並べ替える方法

この記事では、Python でリストを並べ替える方法を説明します。

Python では、 sort() メソッドを使用してリストを適切に並べ替えることができます。または、組み込みの sorted() 関数を使用して、リストのソートされたコピーを取得することもできます。

このチュートリアルでは、次のことを学習します。

  • sort() メソッドと sorted() 関数の構文
  • リストを昇順と降順で並べ替えるコード例
  • key パラメータを使用して並べ替えをカスタマイズする
  • sort() sorted() の違い

始めましょう!👩🏽‍💻

Python でリストを並べ替える方法
Python でリストを並べ替える方法

Pythonのsort()メソッドの構文

sort() メソッドは Python リストに作用します。そしてリストをその場でソートし、元のリストを変更します。

Python の sort() メソッドの構文は次のとおりです。

 <list>.sort(reverse = True | False, key = <func>)

上記の構文を解析してみましょう。

  • <list> 、任意の有効な Python リスト オブジェクトです。
  • reverse True または False のいずれかを受け取る オプションの パラメーターです。
  • reverse のデフォルト値は False で、リストは昇順にソートされます。リストを降順に並べ替えるには、 True を指定します。
  • key <func> に設定される オプションの パラメーターでもあります。
  • <func> は、組み込み関数またはユーザー定義関数を指定できます。

次のセクションでは、簡単な例のコーディングを開始します。

Python でリストを並べ替える方法
Python でリストを並べ替える方法

Python リストを昇順に並べ替える方法

リスト nums 考えてみましょう。リストを昇順に並べ替えるには、リストに対して sort() メソッドを呼び出します。

▶ 次のコード スニペットを実行します。

 nums = [25,13,6,17,9]
nums.sort()
print(nums)

# Output: [6, 9, 13, 17, 25]

リスト nums 昇順にソートされており、元のリストは変更されています。これは インプレース並べ替え と呼ばれます。

Python でリストを並べ替える方法
Python でリストを並べ替える方法

Python リストを降順に並べ替える方法

リストを降順に並べ替えるには、以下に示すように reverse True に設定します。

 nums = [25,13,6,17,9]
nums.sort(reverse = True)
print(nums)

# Output: [25, 17, 13, 9, 6]

リストが降順に並べ替えられていることがわかります。

Python でリストを並べ替える方法
Python でリストを並べ替える方法

Pythonのsort()メソッドでキーを使用する方法

このセクションでは、 key パラメーターを使用して並べ替えをカスタマイズしましょう。

ここで、 mod5() 数値 x を受け取り、数値 x を 5 で割った余りを返す関数です。

 def mod5(x):
  return x % 5 

そして、上記の関数を key として使用したいと思います。

次に、次のコードセルを実行します。

 nums = [25,13,6,17,9]
nums.sort(key = mod5)
print(nums)

# Output: [25, 6, 17, 13, 9]

出力を解析するには少し時間がかかります。

通常の並べ替えの代わりに、 mod5 という key に従って並べ替えをカスタマイズしていることに注目してください。

  • 5 で割ったときに最小の余りが残る数が最初に来るようになりました。
  • そして、5 で割ったときに最大の余りが残る数値が、並べ替えられたリストの最後の要素になります。

これが事実であることを確認するには、次のコード スニペットを実行します。

 nums = [25,13,6,17,9]

for num in nums:
  print(f"{num} leaves remainder {num%5} when divided by 5")

# Output
25 leaves remainder 0 when divided by 5
13 leaves remainder 3 when divided by 5
6 leaves remainder 1 when divided by 5
17 leaves remainder 2 when divided by 5
9 leaves remainder 4 when divided by 5

5 は 25 を正確に除算し、余りは 0 になります。つまり、これが並べ替えられたリストの最初の要素になります。 6 は余り 1 を残すので、これが 2 番目の要素、というように続きます。 9 を 5 で割ると余りが 4 となり、これが並べ替えられたリストの最後の要素になります。

別の関数を定義する代わりに、 ラムダ関数 を使用することもできます。 Python では、ラムダは 1 行の匿名関数です。 lambda args:expression は、 args に基づいて計算された を返します。

ここで、以下に示すように、ラムダ式を使用して上記の並べ替えを書き直してみましょう。

 nums = [25,13,6,17,9]
nums.sort(key = lambda x:x%5)
print(nums)

# Output: [25, 6, 17, 13, 9]

ここまでは、数値のリストを並べ替える方法を学習しました。次に、Python で文字列のリストを並べ替える方法を見てみましょう。

Python リストをアルファベット順に並べ替える方法

このセクションでは、ハリー ポッターからインスピレーションを得た例を使用して、文字列のリストを並べ替える方法を学習します。 ✨

Pythonのソートリスト
Pythonのソートリスト

この例では、 students ホグワーツの生徒のリストです。そして、名前のアルファベット順に並べ替えたいと思います。

文字列のリストを並べ替える場合、デフォルトの並べ替えはアルファベット順です。

 students = ["Harry","Ron","Hermione","Draco","Cedric"]

ソートされたリストを印刷して、ソートの結果を確認してみましょう。

 students.sort()
print(students)

# Output
['Cedric','Draco', 'Harry', 'Hermione', 'Ron']

Python リストを逆アルファベット順に並べ替える方法

リストをアルファベットの逆順に並べ替えるには、以下のコード スニペットに示すように、 reverse = True を設定します。

 students.sort(reverse = True)
print(students)

# Output
['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']

出力から、リストが実際に逆順に並べ替えられていることがわかります。

キーパラメータの使用方法 並べ替えのカスタマイズ

このセクションでは、オプションの key パラメーターを使用して並べ替えをカスタマイズしましょう。

次のリスト、 houses 考えてみましょう。

 houses = [
            {1:"Draco","house":"Slytherin"},
            {2:"Harry","house":"Gryffindor"},
            {3:"Cedric","house":"Hufflepuff"}
         ]

ここで、 houses 辞書のリストです。各辞書には 2 つのキーと値のペアが含まれており、1 つは生徒の名前を示し、もう 1 つは生徒が所属する家を示します。

ここで、このリストの 家を、 それらが属する 家のアルファベット順 に並べ替えたいと思います。

もうお気づきかと思いますが、 key パラメータを特定の生徒の家に設定する必要があります。

各生徒の家を取得するには、以下に示すように関数 returnHouse() を定義できます。

 def returnHouse(student):
  return student['house']

この関数は、特定の生徒が所属するハウスを返します。

これで、図に示すように、住宅リストに対して sort() メソッドを呼び出すことができます。

 houses.sort(key=returnHouse)

以下の出力では、リストが生徒の名前ではなく、家によってどのように並べ替えられているかに注目してください。グリフィンドール、ハッフルパフ、スリザリンがアルファベット順に並んでいるのはそのためです。

 print(houses)

# Output
[{2: 'Harry', 'house': 'Gryffindor'}, 
{3: 'Cedric', 'house': 'Hufflepuff'}, 
{1: 'Draco', 'house': 'Slytherin'}]

それに応じて key パラメーターを定義するには、ラムダ関数を使用することもできます。すべてのリスト項目について、この関数はそのリスト項目のハウスを返します。

▶ 次のコードセルを実行してこれを確認します。

 houses.sort(key=lambda student:student["house"])
print(houses)

# Output
[{2: 'Harry', 'house': 'Gryffindor'}, 
{3: 'Cedric', 'house': 'Hufflepuff'}, 
{1: 'Draco', 'house': 'Slytherin'}]

これまでのすべての例では、リストに対して sort() メソッドを使用しました。そして、それが元のリストを変更することがわかりました。

元のリストをそのまま保持し、並べ替えられたリストのコピーを取得したい場合はどうすればよいでしょうか?

Python では、 sorted() 関数を使用してこれを行うことができます。

Pythonのsorted()関数の構文

sorted() 関数は、リストまたは任意のコレクションを引数として受け取ります。そして、ソートされたリストのコピーが返されます。元のリストは変更されません。

Python の sorted() 関数の構文は次のとおりです。

 <sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)

構文が前に見た sort() メソッドと非常に似ていることに注目してください。

  • <list> は任意の有効な Python リスト オブジェクトであり、 必須 パラメータです。
  • reverse key オプションの パラメータです

: リストのみに作用する sort() メソッドとは異なり、 sorted() 関数は、リスト、文字列、辞書などの Python 反復可能オブジェクトの並べ替えに使用できます。

sorted() 関数を使用して Python リストを並べ替える方法

#1. この例では、 nums 数値のリストです。

nums 引数として sorted() 関数を呼び出すことができます。そしてそれをリスト sorted_nums1 に割り当てます。

 nums = [25,13,6,17,9]
sorted_nums1 = sorted(nums)
print(sorted_nums1)

# Output: [6, 9, 13, 17, 25]

上記の出力では、デフォルトで nums 昇順にソートされていることがわかります。

また、 sorted() は新しいリストを返すため、元のリスト nums 変更されないことに注意してください。これについては以下で検証します。

 print(nums)
 # Output: [25, 13, 6, 17, 9]

#2 次に、オプションのパラメーター reverse True に設定し、 sorted_nums2 を取得します。

以下のコード セルに示すように、 sorted_nums2 、項目が降順に並べ替えられた新しいリストです。

 sorted_nums2 = sorted(nums,reverse = True)
print(sorted_nums2)

# Output: [25, 17, 13, 9, 6]

#3. この例では、文字列のリストを操作してみましょう。

前の例と同様に、 sorted() 関数を呼び出すと新しいリストが返されます。そして項目はアルファベット順にソートされます。

 fruits = ['pears','strawberry','apple','pineapple','blueberry']
sorted_fr1 = sorted(fruits)
print(sorted_fr1)

# Output:
['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']

#4. 次に、オプションの key パラメーターを使用して並べ替えをカスタマイズしましょう。 key len に設定します。これにより、文字列の長さに基づいてリストが並べ替えられます。

注: Python では、組み込みの len() 関数はリスト、文字列、タプルなどの任意の反復可能関数を受け取ります。そして、反復可能の長さを返します。

最も短い文字列がソートされたリストの最初に表示され、最も長い文字列がソートされたリストの最後に表示されます。

 fruits = ['pear','strawberry','apple','pineapple','blueberry']
sorted_fr2 = sorted(fruits,key=len)
print(sorted_fr2)

# Output:
['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']

上記の出力では、 pear が最も短い文字列であり、 strawberry が最も長い文字列です。

Python でリストを反転して逆方向にスピンする方法もお読みください。

Pythonのsort()メソッドとsorted()関数の比較

ここまでは、 sort() メソッドと sorted() 関数の使用方法を学習しました。このセクションでは、これら 2 つの方法の違いを列挙してみましょう。

Python .sort() メソッド Pythonのsorted()関数
リストをその場で並べ替えます – 元のリストを変更します 新しいソートされたリストを返します
Python リストでのみ動作します リスト、文字列、その他のコレクションなどの Python 反復可能オブジェクトを操作します
戻り値の型は None です 反復可能オブジェクトのソートされたコピーを返します。

まとめ 👩‍🏫

この Python リストのチュートリアルがお役に立てば幸いです。

これまで説明した内容を簡単にまとめてみましょう。

  • list.sort(reverse = True | False, key = <func>) を オプションの reverse パラメーターと key パラメーターとともに使用して、リストを所定の位置に並べ替えます。
  • ソートされたリストのコピーを取得するには 、sorted(list, reverse = True | False, key = <func>) を 使用します。

Python リストを並べ替える方法を学習したので、次は Python のリスト内包表記について学習します。あるいは、Python でファイルを処理したり、JSON ファイルを操作したりする方法を学ぶこともできます。

Online Python Compiler で上記の例を試してみてください。

「 Python でリストを並べ替える方法」についてわかりやすく解説!絶対に観るべきベスト2動画

【毎日Python】Pythonのリストなどを並び替える方法|sorted
【こつこつPython】Pythonで配列を昇順に並び替える方法|numpy.sort,argsort

この記事では、Python でリストを並べ替える方法を説明します。

Python では、 sort() メソッドを使用してリストを適切に並べ替えることができます。または、組み込みの sorted() 関数を使用して、リストのソートされたコピーを取得することもできます。

このチュートリアルでは、次のことを学習します。

  • sort() メソッドと sorted() 関数の構文
  • リストを昇順と降順で並べ替えるコード例
  • key パラメータを使用して並べ替えをカスタマイズする
  • sort() sorted() の違い

始めましょう!👩🏽‍💻

Python でリストを並べ替える方法
Python でリストを並べ替える方法

Pythonのsort()メソッドの構文

sort() メソッドは Python リストに作用します。そしてリストをその場でソートし、元のリストを変更します。

Python の sort() メソッドの構文は次のとおりです。

 <list>.sort(reverse = True | False, key = <func>)

上記の構文を解析してみましょう。

  • <list> 、任意の有効な Python リスト オブジェクトです。
  • reverse True または False のいずれかを受け取る オプションの パラメーターです。
  • reverse のデフォルト値は False で、リストは昇順にソートされます。リストを降順に並べ替えるには、 True を指定します。
  • key <func> に設定される オプションの パラメーターでもあります。
  • <func> は、組み込み関数またはユーザー定義関数を指定できます。

次のセクションでは、簡単な例のコーディングを開始します。

Python でリストを並べ替える方法
Python でリストを並べ替える方法

Python リストを昇順に並べ替える方法

リスト nums 考えてみましょう。リストを昇順に並べ替えるには、リストに対して sort() メソッドを呼び出します。

▶ 次のコード スニペットを実行します。

 nums = [25,13,6,17,9]
nums.sort()
print(nums)

# Output: [6, 9, 13, 17, 25]

リスト nums 昇順にソートされており、元のリストは変更されています。これは インプレース並べ替え と呼ばれます。

Python でリストを並べ替える方法
Python でリストを並べ替える方法

Python リストを降順に並べ替える方法

リストを降順に並べ替えるには、以下に示すように reverse True に設定します。

 nums = [25,13,6,17,9]
nums.sort(reverse = True)
print(nums)

# Output: [25, 17, 13, 9, 6]

リストが降順に並べ替えられていることがわかります。

Python でリストを並べ替える方法
Python でリストを並べ替える方法

Pythonのsort()メソッドでキーを使用する方法

このセクションでは、 key パラメーターを使用して並べ替えをカスタマイズしましょう。

ここで、 mod5() 数値 x を受け取り、数値 x を 5 で割った余りを返す関数です。

 def mod5(x):
  return x % 5 

そして、上記の関数を key として使用したいと思います。

次に、次のコードセルを実行します。

 nums = [25,13,6,17,9]
nums.sort(key = mod5)
print(nums)

# Output: [25, 6, 17, 13, 9]

出力を解析するには少し時間がかかります。

通常の並べ替えの代わりに、 mod5 という key に従って並べ替えをカスタマイズしていることに注目してください。

  • 5 で割ったときに最小の余りが残る数が最初に来るようになりました。
  • そして、5 で割ったときに最大の余りが残る数値が、並べ替えられたリストの最後の要素になります。

これが事実であることを確認するには、次のコード スニペットを実行します。

 nums = [25,13,6,17,9]

for num in nums:
  print(f"{num} leaves remainder {num%5} when divided by 5")

# Output
25 leaves remainder 0 when divided by 5
13 leaves remainder 3 when divided by 5
6 leaves remainder 1 when divided by 5
17 leaves remainder 2 when divided by 5
9 leaves remainder 4 when divided by 5

5 は 25 を正確に除算し、余りは 0 になります。つまり、これが並べ替えられたリストの最初の要素になります。 6 は余り 1 を残すので、これが 2 番目の要素、というように続きます。 9 を 5 で割ると余りが 4 となり、これが並べ替えられたリストの最後の要素になります。

別の関数を定義する代わりに、 ラムダ関数 を使用することもできます。 Python では、ラムダは 1 行の匿名関数です。 lambda args:expression は、 args に基づいて計算された を返します。

ここで、以下に示すように、ラムダ式を使用して上記の並べ替えを書き直してみましょう。

 nums = [25,13,6,17,9]
nums.sort(key = lambda x:x%5)
print(nums)

# Output: [25, 6, 17, 13, 9]

ここまでは、数値のリストを並べ替える方法を学習しました。次に、Python で文字列のリストを並べ替える方法を見てみましょう。

Python リストをアルファベット順に並べ替える方法

このセクションでは、ハリー ポッターからインスピレーションを得た例を使用して、文字列のリストを並べ替える方法を学習します。 ✨

Pythonのソートリスト
Pythonのソートリスト

この例では、 students ホグワーツの生徒のリストです。そして、名前のアルファベット順に並べ替えたいと思います。

文字列のリストを並べ替える場合、デフォルトの並べ替えはアルファベット順です。

 students = ["Harry","Ron","Hermione","Draco","Cedric"]

ソートされたリストを印刷して、ソートの結果を確認してみましょう。

 students.sort()
print(students)

# Output
['Cedric','Draco', 'Harry', 'Hermione', 'Ron']

Python リストを逆アルファベット順に並べ替える方法

リストをアルファベットの逆順に並べ替えるには、以下のコード スニペットに示すように、 reverse = True を設定します。

 students.sort(reverse = True)
print(students)

# Output
['Ron', 'Hermione', 'Harry', 'Draco', 'Cedric']

出力から、リストが実際に逆順に並べ替えられていることがわかります。

キーパラメータの使用方法 並べ替えのカスタマイズ

このセクションでは、オプションの key パラメーターを使用して並べ替えをカスタマイズしましょう。

次のリスト、 houses 考えてみましょう。

 houses = [
            {1:"Draco","house":"Slytherin"},
            {2:"Harry","house":"Gryffindor"},
            {3:"Cedric","house":"Hufflepuff"}
         ]

ここで、 houses 辞書のリストです。各辞書には 2 つのキーと値のペアが含まれており、1 つは生徒の名前を示し、もう 1 つは生徒が所属する家を示します。

ここで、このリストの 家を、 それらが属する 家のアルファベット順 に並べ替えたいと思います。

もうお気づきかと思いますが、 key パラメータを特定の生徒の家に設定する必要があります。

各生徒の家を取得するには、以下に示すように関数 returnHouse() を定義できます。

 def returnHouse(student):
  return student['house']

この関数は、特定の生徒が所属するハウスを返します。

これで、図に示すように、住宅リストに対して sort() メソッドを呼び出すことができます。

 houses.sort(key=returnHouse)

以下の出力では、リストが生徒の名前ではなく、家によってどのように並べ替えられているかに注目してください。グリフィンドール、ハッフルパフ、スリザリンがアルファベット順に並んでいるのはそのためです。

 print(houses)

# Output
[{2: 'Harry', 'house': 'Gryffindor'}, 
{3: 'Cedric', 'house': 'Hufflepuff'}, 
{1: 'Draco', 'house': 'Slytherin'}]

それに応じて key パラメーターを定義するには、ラムダ関数を使用することもできます。すべてのリスト項目について、この関数はそのリスト項目のハウスを返します。

▶ 次のコードセルを実行してこれを確認します。

 houses.sort(key=lambda student:student["house"])
print(houses)

# Output
[{2: 'Harry', 'house': 'Gryffindor'}, 
{3: 'Cedric', 'house': 'Hufflepuff'}, 
{1: 'Draco', 'house': 'Slytherin'}]

これまでのすべての例では、リストに対して sort() メソッドを使用しました。そして、それが元のリストを変更することがわかりました。

元のリストをそのまま保持し、並べ替えられたリストのコピーを取得したい場合はどうすればよいでしょうか?

Python では、 sorted() 関数を使用してこれを行うことができます。

Pythonのsorted()関数の構文

sorted() 関数は、リストまたは任意のコレクションを引数として受け取ります。そして、ソートされたリストのコピーが返されます。元のリストは変更されません。

Python の sorted() 関数の構文は次のとおりです。

 <sorted_copy> = sorted(<list>, reverse = True | False, key = <func>)

構文が前に見た sort() メソッドと非常に似ていることに注目してください。

  • <list> は任意の有効な Python リスト オブジェクトであり、 必須 パラメータです。
  • reverse key オプションの パラメータです

: リストのみに作用する sort() メソッドとは異なり、 sorted() 関数は、リスト、文字列、辞書などの Python 反復可能オブジェクトの並べ替えに使用できます。

sorted() 関数を使用して Python リストを並べ替える方法

#1. この例では、 nums 数値のリストです。

nums 引数として sorted() 関数を呼び出すことができます。そしてそれをリスト sorted_nums1 に割り当てます。

 nums = [25,13,6,17,9]
sorted_nums1 = sorted(nums)
print(sorted_nums1)

# Output: [6, 9, 13, 17, 25]

上記の出力では、デフォルトで nums 昇順にソートされていることがわかります。

また、 sorted() は新しいリストを返すため、元のリスト nums 変更されないことに注意してください。これについては以下で検証します。

 print(nums)
 # Output: [25, 13, 6, 17, 9]

#2 次に、オプションのパラメーター reverse True に設定し、 sorted_nums2 を取得します。

以下のコード セルに示すように、 sorted_nums2 、項目が降順に並べ替えられた新しいリストです。

 sorted_nums2 = sorted(nums,reverse = True)
print(sorted_nums2)

# Output: [25, 17, 13, 9, 6]

#3. この例では、文字列のリストを操作してみましょう。

前の例と同様に、 sorted() 関数を呼び出すと新しいリストが返されます。そして項目はアルファベット順にソートされます。

 fruits = ['pears','strawberry','apple','pineapple','blueberry']
sorted_fr1 = sorted(fruits)
print(sorted_fr1)

# Output:
['apple', 'blueberry', 'pears', 'pineapple', 'strawberry']

#4. 次に、オプションの key パラメーターを使用して並べ替えをカスタマイズしましょう。 key len に設定します。これにより、文字列の長さに基づいてリストが並べ替えられます。

注: Python では、組み込みの len() 関数はリスト、文字列、タプルなどの任意の反復可能関数を受け取ります。そして、反復可能の長さを返します。

最も短い文字列がソートされたリストの最初に表示され、最も長い文字列がソートされたリストの最後に表示されます。

 fruits = ['pear','strawberry','apple','pineapple','blueberry']
sorted_fr2 = sorted(fruits,key=len)
print(sorted_fr2)

# Output:
['pear', 'apple', 'pineapple', 'blueberry', 'strawberry']

上記の出力では、 pear が最も短い文字列であり、 strawberry が最も長い文字列です。

Python でリストを反転して逆方向にスピンする方法もお読みください。

Pythonのsort()メソッドとsorted()関数の比較

ここまでは、 sort() メソッドと sorted() 関数の使用方法を学習しました。このセクションでは、これら 2 つの方法の違いを列挙してみましょう。

Python .sort() メソッド Pythonのsorted()関数
リストをその場で並べ替えます – 元のリストを変更します 新しいソートされたリストを返します
Python リストでのみ動作します リスト、文字列、その他のコレクションなどの Python 反復可能オブジェクトを操作します
戻り値の型は None です 反復可能オブジェクトのソートされたコピーを返します。

まとめ 👩‍🏫

この Python リストのチュートリアルがお役に立てば幸いです。

これまで説明した内容を簡単にまとめてみましょう。

  • list.sort(reverse = True | False, key = <func>) を オプションの reverse パラメーターと key パラメーターとともに使用して、リストを所定の位置に並べ替えます。
  • ソートされたリストのコピーを取得するには 、sorted(list, reverse = True | False, key = <func>) を 使用します。

Python リストを並べ替える方法を学習したので、次は Python のリスト内包表記について学習します。あるいは、Python でファイルを処理したり、JSON ファイルを操作したりする方法を学ぶこともできます。

Online Python Compiler で上記の例を試してみてください。

「 Python でリストを並べ替える方法」についてわかりやすく解説!絶対に観るべきベスト2動画

【毎日Python】Pythonのリストなどを並び替える方法|sorted
【こつこつPython】Pythonで配列を昇順に並び替える方法|numpy.sort,argsort