Python – 文字列リストを文字列内の数値部分に基づいて並べ替える方法
文字列のリストを、各文字列に含まれる数値部分に基づいて並べ替えたいケースはよくあります。そのような場合、正規表現(reモジュール)と map メソッド、list メソッドを組み合わせた関数を定義することで、簡単に実現できます。
サンプルコード
以下に具体的な実装例を示します。
import re
print("The regular expression package has been imported successfully.")
def my_digit_sort(my_list):
return list(map(int, re.findall(r'\d+', my_list)))[0]
my_list = ["pyt23hon", "fu30n", "lea14rn", 'co00l', 'ob8uje3345t']
print("The list is : " )
print(my_list)
my_list.sort(key=my_digit_sort)
print("The list has been sorted based on the pre-defined method..")
print("The resultant list is : ")
print(my_list)
出力結果
The regular expression package has been imported successfully. The list is : ['pyt23hon', 'fu30n', 'lea14rn', 'co00l', 'ob8uje3345t'] The list has been sorted based on the pre-defined method.. The resultant list is : ['co00l', 'ob8uje3345t', 'lea14rn', 'pyt23hon', 'fu30n']
処理の流れと解説
まず、正規表現を扱うための
reモジュールを環境にインポートします。my_digit_sortという名前の関数を定義します。この関数は、リストの各要素(文字列)を引数として受け取ります。reパッケージのfindallメソッドと正規表現パターンr'\d+'を使って、文字列内に含まれる連続した数字をすべて抽出します。抽出された数字は
map(int, ...)によって整数型(int)に変換されます。変換結果を
listに変換し、その最初の要素[0]を戻り値として返します。これがソート時の比較キーになります。関数の外側では、数字を含む文字列のリストを定義し、コンソールに表示します。
sortメソッドのkey引数に先ほど定義した関数を指定することで、各文字列から抽出した数値を基準にリスト全体が並べ替えられます。最終的に、並べ替え後のリストがコンソールに出力されます。
ポイント
この手法のポイントは、文字列を直接比較するのではなく、文字列から抽出した数値をソートキーとして利用する点です。これにより、「co00l」→ 0、「ob8uje3345t」→ 8 のように、文字列中の最初の数値の大小順に自然な並べ替えが可能になります。ファイル名やバージョン番号など、数字が混在する文字列データを扱う際に非常に便利なテクニックです。
-
【Python】文字列の長さに基づいてリストを並べ替える方法
文字列のリストがあり、その長さを基準にリストを並べ替えたいとします。つまり、短い文字列から長い文字列へと昇順に整列させる必要があります。これを実現するには、独自のアルゴリズムを書くか、Pythonの組み込みメソッドであるsort()や関数sorted()を、キー(key)引数と組み合わせて使用するのが便利です。実行例まず、どのような動作になるのか例で確認しましょう。入力: strings = [hafeez, aslan, honey, appi] 出力: [appi, aslan, honey, hafeez]それでは、sorted(key)関数とsort(key)メソッドを使ったプログラム
-
Pythonで文字列のリストを並べ替える方法:sort()とsorted()の使い分け
Pythonでは、文字列のリストを並べ替える方法が2つ用意されています。リスト自体を直接変更するsort()メソッドと、元のリストを保持したまま新しい並べ替え済みリストを作成するsorted()関数です。それぞれの特徴と使い方を解説します。 sort()メソッドでリストをその場で並べ替える sort()は、リストそのものを並べ替える「in-place(破壊的)」な操作です。元のリストの順序が直接変更されるため、戻り値を受け取る必要はありません。 >>> a = [Hello, My, Followers] >>> a.sort() >>>