Pythonで文字列のリストを整数に変換してソートする方法
Pythonでデータ分析を行っていると、数値が文字列として表現されているデータを扱わなければならない場面に遭遇することがあります。本記事では、数値が文字列として格納されたリストを整数に変換し、さらに昇順にソートして表示する方法を、複数のアプローチから解説します。
方法1: map関数とsorted関数を組み合わせる
まず最初に紹介するのは、map()関数を使ってリストの各要素にint関数を適用する方法です。その後、sorted()関数でリスト全体を並べ替えます。この方法は負の数も正しく処理できるのが特徴です。
コード例
listA = ['54', '21', '-10', '92', '5']
# 元のリスト
print("Given list : \n", listA)
# mapで各要素をint型に変換
listint = map(int, listA)
# ソートを適用
res = sorted(listint)
# 結果を出力
print("Sorted list of integers: \n", res)実行結果
上記のコードを実行すると、以下のような結果が得られます。
Given list : ['54', '21', '-10', '92', '5'] Sorted list of integers: [-10, 5, 21, 54, 92]
方法2: リスト内包表記とsort()メソッドを使う
次のアプローチでは、forループ(リスト内包表記)によって各要素にint関数を適用し、結果を新しいリストとして保存します。その後、リストのsort()メソッドを呼び出すことで、元のリスト自体を並べ替えます。
コード例
listA = ['54', '21', '-10', '92', '5']
# 元のリスト
print("Given list : \n", listA)
# 各要素をint型に変換
res = [int(x) for x in listA]
# ソートを適用
res.sort()
# 結果を出力
print("Sorted list of integers: \n", res)実行結果
上記のコードを実行すると、以下のような結果が得られます。
Given list : ['54', '21', '-10', '92', '5'] Sorted list of integers: [-10, 5, 21, 54, 92]
方法3: sorted関数とジェネレータ式を組み合わせる
このアプローチは前の方法と似ていますが、forループによる変換結果をそのままsorted()関数の中に記述する点が異なります。たった1つの式で最終的な結果を得られるため、簡潔さが求められる場面で特に有効です。
コード例
listA = ['54', '21', '-10', '92', '5']
# 元のリスト
print("Given list : \n", listA)
# 変換とソートを1つの式で実行
res = sorted(int(x) for x in listA)
# 結果を出力
print("Sorted list of integers: \n", res)実行結果
上記のコードを実行すると、以下のような結果が得られます。
Given list : ['54', '21', '-10', '92', '5'] Sorted list of integers: [-10, 5, 21, 54, 92]
まとめ
| 方法 | 特徴 |
|---|---|
| map + sorted | 関数型スタイル。読みやすく、意図が明確 |
| 内包表記 + sort() | 元のリストを直接並べ替えたい場合に便利 |
| sorted + ジェネレータ式 | 最も簡潔。1行で変換からソートまで完結 |
いずれの方法でも同じ結果が得られますが、コードの可読性や用途に応じて使い分けることをおすすめします。特に、一時的にソート済みリストが必要な場合はsorted()を使い、既存のリストを書き換えてよい場合はsort()を選ぶのがPythonの一般的な作法です。
-
PythonでDateTime文字列をミリ秒単位の整数に変換する方法を徹底解説
Pythonでは、timeモジュールを使うことで、現在時刻をミリ秒単位の整数として簡単に取得できます。基本的な考え方は、まず time.time() 関数で秒単位の時刻(浮動小数点数)を取得し、それに1000を掛けて四捨五入することでミリ秒に変換するというものです。現在時刻をミリ秒で取得する方法以下のサンプルコードでは、現在のUNIXタイムスタンプをミリ秒単位の整数として取得しています。import time milliseconds = int(round(time.time() * 1000)) print(milliseconds)実行結果このコードを実行すると、次のような出力が得られま
-
【Python入門】文字のリストを文字列に変換する方法
Pythonのjoin()メソッドとは Pythonには、リストやタプルなどのシーケンスオブジェクトの要素を連結して1つの文字列を返す、組み込みのjoin()メソッドが用意されています。join()は、呼び出し元の文字列を「区切り文字」として要素間に挿入しながら連結を行います。そのため、区切り文字なしで単純に連結したい場合は、空文字列()に対してjoin()を呼び出します。 基本的な使い方:区切り文字なしで連結する 以下の例では、文字のリスト [h, e, l, l, o] を空文字列で連結し、「hello」という1つの文字列に変換しています。 >>> lst=[h,e,l