Pythonで文字列のリストを並べ替える方法:sort()とsorted()の使い分け
Pythonでは、文字列のリストを並べ替える方法が2つ用意されています。リスト自体を直接変更するsort()メソッドと、元のリストを保持したまま新しい並べ替え済みリストを作成するsorted()関数です。それぞれの特徴と使い方を解説します。
sort()メソッドでリストをその場で並べ替える
sort()は、リストそのものを並べ替える「in-place(破壊的)」な操作です。元のリストの順序が直接変更されるため、戻り値を受け取る必要はありません。
>>> a = ["Hello", "My", "Followers"] >>> a.sort() >>> print(a) ['Followers', 'Hello', 'My']
この例では、アルファベット順に従って「Followers」「Hello」「My」の順に並べ替えられています。文字列の場合、デフォルトでは辞書順(ASCIIコード順)でソートされます。
sorted()関数で元のリストを保持したまま並べ替える
元のリストを変更せずに残したい場合は、組み込み関数のsorted()を使用します。sorted()は引数として渡されたリストを並べ替えた新しいリストを返します。
>>> a = ["Hello", "My", "Followers"] >>> b = sorted(a) >>> print(b) ['Followers', 'Hello', 'My'] >>> print(a) ['Hello', 'My', 'Followers']
このように、変数bには並べ替え後の新しいリストが格納され、元のaは変更されずにそのまま残ります。
降順で並べ替えたい場合
どちらの方法でも、reverse=Trueオプションを指定すると降順(逆順)で並べ替えられます。
>>> a = ["Hello", "My", "Followers"] >>> sorted(a, reverse=True) ['My', 'Hello', 'Followers']
大文字小文字を無視して並べ替えたい場合
デフォルトのソートでは大文字が小文字より先に来るため、意図しない順序になることがあります。そのような場合はkey引数にstr.lowerを指定すると便利です。
>>> names = ["banana", "Apple", "cherry"] >>> sorted(names, key=str.lower) ['Apple', 'banana', 'cherry']
まとめ
- sort():リスト自体を並べ替える(元のリストが変更される)
- sorted():並べ替え済みの新しいリストを返す(元のリストは保持される)
reverse=Trueで降順、key=で並べ替え基準をカスタマイズ可能
用途に応じて使い分けることで、Pythonでのリスト操作がより柔軟になります。
-
Pythonで日付文字列のリストを並べ替える方法
Pythonで日付形式の文字列が格納されたリストを正しく並べ替えるには、sort関数を使うだけでは不十分です。日付文字列は辞書順に比較されるため、そのままソートすると意図した順序になりません。そこで、各日付文字列をdatetimeオブジェクトに変換し、その値を基準にソートする必要があります。具体的には、sort関数のkey引数を利用します。key引数にはラムダ式(無名関数)を渡し、その中でdatetime.strptime()を使って各日付文字列をdatetimeオブジェクトに変換します。こうすることで、Pythonはこのdatetimeオブジェクト同士を比較してリストを時系列順に並べ替えてく
-
Pythonでリストを並べ替える方法を解説!sortとsortedの使い分けからkey引数まで
Pythonでは、整数・浮動小数点数・文字列などのリストは、sortメソッドを呼び出すだけで簡単に並べ替えができます。また、降順(逆順)でソートしたい場合は、reverseパラメータにTrueを指定するだけです。sortメソッドを使った基本的な並べ替えまずは、昇順と降順それぞれのソート例を見てみましょう。my_list = [1, 5, 2, 6, 0] my_list.sort() print(my_list) my_list.sort(reverse=True) print(my_list)出力結果[0, 1, 2, 5, 6] [6, 5, 2, 1, 0]このように、sort()を呼び