【Python】文字列のリストと数値のリストを相互に変換する方法

Pythonプログラミングを学び始めたばかりの方へ、この記事では文字列のリストを数値のリストに変換する方法と、その逆の方法について詳しく解説します。

基本的な変換方法から、エラーハンドリング、特定の数値型への変換、さらには実践的な例としてCSVデータやユーザー入力の変換方法まで、初心者でも理解しやすいようにサンプルコードとともに説明します。

目次から探す

文字列のリストを数値のリストに変換する方法

Pythonでは、文字列のリストを数値のリストに変換する方法がいくつかあります。

ここでは、基本的な変換方法から、例外処理を含む方法、特定の数値型への変換方法までを詳しく解説します。

基本的な変換方法

文字列のリストを数値のリストに変換する基本的な方法として、map関数とリスト内包表記を使用する方法があります。

map関数を使用する方法

map関数を使用すると、リスト内の各要素に対して指定した関数を適用することができます。

以下は、文字列のリストを整数のリストに変換する例です。

# 文字列のリスト
str_list = ["1", "2", "3", "4", "5"]
# map関数を使用して整数のリストに変換
int_list = list(map(int, str_list))
print(int_list)  # 出力: [1, 2, 3, 4, 5]

この方法では、map関数に変換したい型(この場合はint)を渡し、リスト全体に適用します。

リスト内包表記を使用する方法

リスト内包表記を使用すると、より簡潔にリストの変換が行えます。

以下は、同じく文字列のリストを整数のリストに変換する例です。

# 文字列のリスト
str_list = ["1", "2", "3", "4", "5"]
# リスト内包表記を使用して整数のリストに変換
int_list = [int(x) for x in str_list]
print(int_list)  # 出力: [1, 2, 3, 4, 5]

リスト内包表記は、リストの各要素に対して処理を行うための簡潔な方法です。

例外処理を含む変換

文字列のリストを数値のリストに変換する際に、無効な文字列が含まれている場合があります。

これを処理するために、例外処理を行う方法を紹介します。

tryとexceptを使用したエラーハンドリング

tryexceptを使用して、変換中にエラーが発生した場合に適切に処理することができます。

# 文字列のリスト
str_list = ["1", "2", "three", "4", "5"]
# 例外処理を含む変換
int_list = []
for item in str_list:
    try:
        int_list.append(int(item))
    except ValueError:
        print(f"無効な文字列: {item}")
print(int_list)  # 出力: [1, 2, 4, 5]

この方法では、無効な文字列が含まれている場合にエラーメッセージを表示し、リストへの追加をスキップします。

無効な文字列をスキップする方法

無効な文字列をスキップして変換を行う方法もあります。

以下は、リスト内包表記を使用した例です。

# 文字列のリスト
str_list = ["1", "2", "three", "4", "5"]
# 無効な文字列をスキップして変換
int_list = [int(x) for x in str_list if x.isdigit()]
print(int_list)  # 出力: [1, 2, 4, 5]

この方法では、isdigitメソッドを使用して、文字列が数字であるかどうかを確認し、数字でない場合はスキップします。

特定の数値型への変換

文字列のリストを特定の数値型(int型float型)に変換する方法を紹介します。

int型への変換

文字列のリストを整数型(int型)に変換する方法です。

# 文字列のリスト
str_list = ["1", "2", "3", "4", "5"]
# 整数型に変換
int_list = [int(x) for x in str_list]
print(int_list)  # 出力: [1, 2, 3, 4, 5]

float型への変換

文字列のリストを浮動小数点数型(float型)に変換する方法です。

# 文字列のリスト
str_list = ["1.1", "2.2", "3.3", "4.4", "5.5"]
# 浮動小数点数型に変換
float_list = [float(x) for x in str_list]
print(float_list)  # 出力: [1.1, 2.2, 3.3, 4.4, 5.5]

このように、文字列のリストを数値のリストに変換する方法は多岐にわたります。

用途に応じて適切な方法を選択してください。

数値のリストを文字列のリストに変換する方法

数値のリストを文字列のリストに変換する方法も、Pythonでは非常に簡単です。

ここでは、基本的な変換方法から特定のフォーマットでの変換方法までを詳しく解説します。

基本的な変換方法

数値のリストを文字列のリストに変換する基本的な方法として、map関数とリスト内包表記の2つがあります。

map関数を使用する方法

map関数を使用すると、リスト内の各要素に対して同じ関数を適用することができます。

数値のリストを文字列に変換する場合、str関数を使用します。

# 数値のリスト
num_list = [1, 2, 3, 4, 5]
# map関数を使用して文字列のリストに変換
str_list = list(map(str, num_list))
print(str_list)  # 出力: ['1', '2', '3', '4', '5']

リスト内包表記を使用する方法

リスト内包表記を使用すると、より簡潔に数値のリストを文字列のリストに変換することができます。

# 数値のリスト
num_list = [1, 2, 3, 4, 5]
# リスト内包表記を使用して文字列のリストに変換
str_list = [str(num) for num in num_list]
print(str_list)  # 出力: ['1', '2', '3', '4', '5']

特定のフォーマットでの変換

数値を特定のフォーマットで文字列に変換する場合、フォーマット指定子を使用する方法があります。

ここでは、小数点以下の桁数を指定する方法とフォーマット文字列を使用する方法を紹介します。

小数点以下の桁数を指定する方法

小数点以下の桁数を指定して数値を文字列に変換するには、format関数やf文字列を使用します。

# 数値のリスト
num_list = [1.2345, 2.3456, 3.4567, 4.5678, 5.6789]
# 小数点以下2桁で文字列に変換
str_list = [format(num, '.2f') for num in num_list]
print(str_list)  # 出力: ['1.23', '2.35', '3.46', '4.57', '5.68']

フォーマット文字列を使用する方法

フォーマット文字列を使用すると、より柔軟に数値を文字列に変換することができます。

例えば、数値を特定の形式で表示したい場合に便利です。

# 数値のリスト
num_list = [1.2345, 2.3456, 3.4567, 4.5678, 5.6789]
# フォーマット文字列を使用して文字列に変換
str_list = [f'{num:.2f}' for num in num_list]
print(str_list)  # 出力: ['1.23', '2.35', '3.46', '4.57', '5.68']

以上が、数値のリストを文字列のリストに変換する方法です。

基本的な変換方法から特定のフォーマットでの変換方法まで、さまざまな方法を使い分けることで、より柔軟にデータを扱うことができます。

実践的な例

ここでは、文字列のリストと数値のリストを相互に変換する実践的な例を紹介します。

具体的には、CSVデータの変換とユーザー入力の変換について説明します。

CSVデータの変換

CSV(Comma-Separated Values)ファイルは、データをテキスト形式で保存するための一般的な形式です。

Pythonでは、csvモジュールを使用してCSVファイルを読み書きすることができます。

CSVファイルから読み込んだデータの変換

まず、CSVファイルからデータを読み込み、文字列のリストを数値のリストに変換する方法を見てみましょう。

import csv
# CSVファイルからデータを読み込む
with open('data.csv', newline='') as csvfile:
    reader = csv.reader(csvfile)
    data = [row for row in reader]
# 文字列のリストを数値のリストに変換する
numeric_data = []
for row in data:
    numeric_row = [int(item) for item in row]
    numeric_data.append(numeric_row)
print(numeric_data)

上記のコードでは、data.csvというCSVファイルからデータを読み込み、各行の文字列を数値に変換しています。

変換後のデータをCSVファイルに書き出す方法

次に、変換後の数値リストを新しいCSVファイルに書き出す方法を見てみましょう。

import csv
# 数値のリストをCSVファイルに書き出す
with open('numeric_data.csv', 'w', newline='') as csvfile:
    writer = csv.writer(csvfile)
    writer.writerows(numeric_data)

上記のコードでは、numeric_data.csvという新しいCSVファイルに数値リストを書き出しています。

ユーザー入力の変換

次に、ユーザーからの入力を数値リストに変換する方法と、数値リストをユーザーに表示する方法を見てみましょう。

ユーザーからの入力を数値リストに変換する方法

ユーザーからの入力を受け取り、それを数値リストに変換する方法を以下に示します。

# ユーザーからの入力を受け取る
user_input = input("数値をカンマで区切って入力してください: ")
# 入力された文字列を数値リストに変換する
numeric_list = [int(item) for item in user_input.split(',')]
print(numeric_list)

上記のコードでは、ユーザーからカンマで区切られた数値を入力してもらい、それを数値リストに変換しています。

数値リストをユーザーに表示する方法

最後に、数値リストをユーザーに表示する方法を見てみましょう。

# 数値リストを文字列に変換する
string_list = [str(item) for item in numeric_list]
# 文字列リストをカンマで結合して表示する
output = ','.join(string_list)
print("変換された数値リスト: " + output)

上記のコードでは、数値リストを文字列リストに変換し、それをカンマで結合してユーザーに表示しています。

これで、CSVデータの変換とユーザー入力の変換についての説明は終わりです。

これらの方法を使えば、さまざまなデータ形式を簡単に変換することができます。

目次から探す