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

Manav Narula 2023年1月30日
  1. Python でリストをアルファベット順に並べ替えるには sort() メソッドを使用する
  2. Python でリストをアルファベット順に並べ替えるには sorted() 関数を使用する
  3. クイックソートアルゴリズムを使って Python でアルファベット順にリストを並べ替える
Python でリストをアルファベット順に並べ替える

このチュートリアルでは、sort()sorted() 関数を用いて文字列を含むリストをアルファベット順に並べ替える方法と、クイックソートアルゴリズムを用いる方法について説明します。

両者の主な違いは、sort() 関数が元のリストをソートするのに対し、sorted() 関数は新しいリストを作成することです。

Python でリストをアルファベット順に並べ替えるには sort() メソッドを使用する

リストオブジェクトの sort() メソッドはリストをソートするために用いられます。デフォルトでは、リストは昇順にソートされます。例えば、

my_list = ["Jack", "Sam", "Jay", "Mark", "Baron"]
my_list.sort()
print(my_list)

出力:

['Baron', 'Jack', 'Jay', 'Mark', 'Sam']

リストを逆順に並べ替えるには、reverse パラメータを用いて True に設定します。デフォルトでは False です。例えば、

my_list = ["Jack", "Sam", "Jay", "Mark", "Baron"]
my_list.sort(reverse=True)
print(my_list)

出力:

['Sam', 'Mark', 'Jay', 'Jack', 'Baron']

ソートされたリストの順序が逆になっていることに注意してください。パラメータ key を用いてソートする条件を指定することもできます。以下のコードでは、各要素の文字列の長さに基づいて昇順にソートします。

my_list = ["Jack", "Sam", "Jay", "Mark", "Baron"]
my_list.sort(key=len)
print(my_list)

出力:

['Sam', 'Jay', 'Mark', 'Jack', 'Baron']

Python でリストをアルファベット順に並べ替えるには sorted() 関数を使用する

関数 sorted() もリストを必要な順序でソートしますが、新しいリストを作成し、元のリストを変更することはありません。アルファベット順に昇順にソートするには、以下のように関数に渡すだけです。

my_list = ["Jack", "Sam", "Jay", "Mark", "Baron"]
sorted_list = sorted(my_list)
print(sorted_list)

出力:

['Baron', 'Jack', 'Jay', 'Mark', 'Sam']

sort() メソッドと同様に、reverse パラメータを用いて降順にソートすることもできます。例えば、以下のようになります。

my_list = ["Jack", "Sam", "Jay", "Mark", "Baron"]
sorted_list = sorted(my_list, reverse=True)
print(sorted_list)

出力:

['Sam', 'Mark', 'Jay', 'Jack', 'Baron']

関数 sort() で行ったように、key パラメータを用いてソートの条件を指定することもできます。例えば、

my_list = ["Jack", "Sam", "Jay", "Mark", "Baron"]
sorted_list = sorted(my_list, reverse=True, key=len)
print(sorted_list)

出力:

['Baron', 'Mark', 'Jack', 'Sam', 'Jay']

クイックソートアルゴリズムを使って Python でアルファベット順にリストを並べ替える

クイックソートアルゴリズムを使ってリストをソートすることもできます。この方法は型破りかもしれませんが、マージソート、選択ソート、挿入ソート、ヒープソート、バブルソートのような他のソート技術でも実現できることは注目に値します。次のコードは、Python でリストをソートするための quicksort メソッドを実装した関数を示しています。

my_list = ["Jack", "Sam", "Jay", "Mark", "Baron"]


def quicksort(lst):
    if not lst:
        return []
    return (
        quicksort([x for x in lst[1:] if x < lst[0]])
        + [lst[0]]
        + quicksort([x for x in lst[1:] if x >= lst[0]])
    )


print(quicksort(my_list))

出力:

['Baron', 'Jack', 'Jay', 'Mark', 'Sam']
著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Python List