Pythonで文字列のリストを整数のリストに変換する方法
Pythonでデータ操作を行っていると、リストの中に「数値を表す文字列」が格納されているケースによく遭遇します。合計値の計算やソートなどを行うためには、これらの文字列を数値(整数)へ変換する必要があります。
本記事では、リスト内の数値文字列を整数に変換する代表的な方法として、int()関数を使う方法とmap()関数を使う方法の2つを、サンプルコード付きでわかりやすく解説します。
int()関数を使う方法
int()関数は、リストの各文字列要素に適用することで、その文字列を整数へ変換できます。ネストされたリスト(入れ子構造)の場合でも、リスト内包表記とforループを組み合わせることで、各要素を確実に処理し、すべての文字列を整数化することが可能です。
サンプルコード
listA = [['29','12'], ['25'], ['70']]
# 元のリスト
print("元のリスト A:", listA)
# int() を使って変換
res = [[int(n) for n in element] for i in listA for element in i]
# 結果
print("整数に変換したリスト:", res)
実行結果
上記のコードを実行すると、以下のような出力が得られます。
元のリスト A: [['29', '12'], ['25'], ['70']] 整数に変換したリスト: [[2, 9], [1, 2], [2, 5], [7, 0]]
この例では、文字列「'29'」が桁ごとに分解され、整数の 2 と 9 に変換されている点に注目してください。これは内側のリストの各文字列がさらに1文字ずつ処理されるためです。
map()関数を使う方法
map()関数を使うこともできます。map()は、指定した関数を渡された各要素に対して繰り返し適用する組み込み関数です。ここでは、外側のリストから内側のリストの要素を取り出すforループを作成し、その中でmap(int, ...)を適用しています。
なお、この方法は内側のリストに複数の文字列要素が含まれている場合には意図どおりに動作しない点に注意が必要です。各内側リストの先頭要素のみを対象としています。
サンプルコード
listA = [['29'], ['25'], ['70']]
# 元のリスト
print("元のリスト A:", listA)
# map() を使って変換
res = [list(map(int, list(elem[0]))) for elem in listA if elem]
# 結果
print("整数に変換したリスト:", res)
実行結果
上記のコードを実行すると、以下のような出力が得られます。
元のリスト A: [['29'], ['25'], ['70']] 整数に変換したリスト: [[2, 9], [2, 5], [7, 0]]
補足:フラットなリストならよりシンプルに書ける
入れ子になっていない通常のリスト(例:['29', '12', '25'])であれば、変換はもっとシンプルです。次のように1行のリスト内包表記だけで済みます。
listB = ['10', '20', '30'] res = [int(x) for x in listB] print(res) # 出力: [10, 20, 30]
また、数値以外の文字列が混在している可能性がある場合は、try-exceptで例外を処理するか、str.isdigit()で事前に判定しておくと安全です。
まとめ
リスト内の数値文字列を整数へ変換するには、int()関数とリスト内包表記を組み合わせるのが最も一般的で読みやすい方法です。ネストされた構造にも柔軟に対応でき、データの前処理や集計作業において非常に便利です。用途やデータ構造に応じて、map()関数なども上手に使い分けましょう。
-
Pythonで文字列を単語のリストに変換する方法
文字列を単語のリストに変換したい場合は、空白文字を基準に文字列を分割するだけで実現できます。最もシンプルな方法は、文字列クラスが標準で提供している split() メソッドを使うことです。このメソッドのデフォルトの区切り文字は空白であり、文字列に対して呼び出すと、空白文字の位置で自動的に分割してくれます。split()メソッドを使う方法引数を指定せずに split() を呼び出すだけで、連続する空白もまとめて処理され、単語ごとのリストが返されます。コード例>>> Please split this string.split() [Please, split, this, st
-
Pythonでリストの文字列表現をリストに変換する方法【ast.literal_evalの使い方】
Pythonでは、[apple, orange, banana] のように文字列として表現されたリストを、実際のリストオブジェクトへ変換したい場面があります。そんなときに便利なのが、標準ライブラリの ast.literal_eval() です。 ast.literal_eval()とは ast.literal_eval() は、文字列をPythonの式として安全に評価するための関数です。任意のコードを実行してしまう危険性がある eval() と異なり、評価できるのは文字列・数値・タプル・リスト・辞書・ブール値(True / False)、そして None といったPythonのリテラル構造のみ