Pythonのリスト(list)の要素をstr型、int型、float型に変換する方法について、サンプルコードを交えながら紹介します。
泥臭く、forループで変換する方法も紹介しています。
forループの扱いに慣れると応用が利くので、是非参考にしてみてください。
この記事で分かること
- 【参考】for文を用いて、1Dリストのデータ型を変換する方法
- map関数を用いて、1Dリストのデータ型を変換する方法
- 【参考】for文を用いて、2Dリストのデータ型を変換する方法
- map関数と内包表記を用いて、2Dリストのデータ型を変換する方法
スポンサーリンク
【参考】for文を用いて、1Dリストのデータ型を変換する方法
はじめに、1Dのリストを、for文を用いて、泥臭く変換する方法を紹介します。
for文の使い方に慣れておくと、他の応用も利くので、自在に扱えるようになることをオススメします。
データ型の変換は、それぞれ下記のように記述します。
書き方
str型への変換 : str(値)
int型への変換 : int(値)
float型への変換 : float(値)
for文を用いて、1Dリストの要素をstr型(文字列型)からint型(整数型)に変換するサンプルコードは、以下になります。
list_1D = ['11', '12', '13', '14']
list_1D_int = []
for data in list_1D :
list_1D_int.append(int(data))
print(list(list_1D_int))
# [11, 12, 13, 14]
> for data in list_1D:
リストから、要素を1つずつ取り出しています。
> list_1D_int.append(int(data))
int型に変換した要素を、リスト「list_1D_int」に追加しています。
float型やstr型に変換する場合は、int(data)の部分を、float(data)やstr(data)に変更してください。
はじめに、for文で変換するコードを見ておくと、
この後のコードがいかに簡潔に記載されているか実感できると思います。
スポンサーリンク
map関数を用いて、1Dリストのデータ型を変換する方法
次に、map関数を用いて、リストの要素のデータ型を変換する方法を紹介します。
map関数を使用することで、リストのすべての要素に、特定の関数の処理を適用することができます。
書き方
map(関数, リスト)
以下、サンプルコードです。
### map関数を用いて、1次元のリストの要素をstr型に変換する
list_1D = [11, 12, 13, 14]
list_1D_str = map(str, list_1D)
print(list_1D_str)
# <map object at 0x0000026AB7447C88>
print(list(list_1D_str))
# ['11', '12', '13', '14']
map関数は、map型のオブジェクトを返します。
そのため、そのままprint( )で表示しても、変換後のリストの要素は確認できません。
上記のサンプルコードでは、list( )でリストに変換しています。
int型に変換する場合は、map(str, list_1D)の部分を、map(int, list_1D)に変更してください。
float型に変換する場合は、map(float, list_1D)に変更してください。
map関数については、下記の記事で詳しく紹介しているので参考にしてみてください。
スポンサーリンク
【参考】for文を用いて、2Dリストのデータ型を変換する方法
for文を用いて、2Dのリストの要素のデータ型を変換する方法を紹介します。
サンプルコードは、以下になります。
### リストの要素をstr型に変換する(for文)
list_2D = [
[11, 12, 13, 14],
[21, 22, 23, 24],
[31, 32, 33, 34]
]
list_2D_str = []
for row in list_2D:
row_str = []
for data in row:
row_str.append(str(data))
list_2D_str.append(row_str)
print(list_2D_str)
# [['11', '12', '13', '14'], ['21', '22', '23', '24'], ['31', '32', '33', '34']]
print(type(list_2D_str[0][0]))
# <class 'str'>
>for row in list_2D:
リストから、行ごとにデータを取り出しています。
>for data in row:
行データから、要素を1つずつ取り出しています。
>row_str.append(str(data))
str型に変換した要素を、リストである「row_str」に追加しています。
>list_2D_str.append(row_str)
1行分の、str型への変換後のデータが入っているリスト「row_str」を、
リストである「list_2D_str」に追加しています。
これが、行数分ループすることで、リスト全体をstr型に変換しています。
スポンサーリンク
map関数と内包表記を用いて、2Dリストのデータ型を変換する方法
map関数とリスト内包表記を用いて、2Dのリストの要素のデータ型を変換する方法を紹介します。
以下、サンプルコードです。
### map関数とリスト内包表記を用いて、2次元のリストの要素をstr型に変換する
list_2D = [
[11, 12, 13, 14],
[21, 22, 23, 24],
[31, 32, 33, 34]
]
list_2D_str = [list(map(str, row)) for row in list_2D]
print(list_2D_str)
# [['11', '12', '13', '14'], ['21', '22', '23', '24'], ['31', '32', '33', '34']]
for文のサンプルコードと比べて、とても簡潔なコードになっていることが分かるかと思います。
>list_2D_str = [list(map(str, row)) for row in list_2D]
ここがリスト内包表記とmap関数の組み合わせになっています。
リスト「list_2D」から、行ごとにデータ「row」を取り出し、map関数に渡しています。
map関数では、リスト「row」の要素すべてに対して、関数strの処理を行います。
list( )に変換したものをlist_2D_strに渡しています。
なお、内包表記については、下記の記事で詳しく紹介しているので参考にしてみてください。
スポンサーリンク
まとめ
Pythonのリスト(list)の要素をstr型、int型、float型に変換する方法について紹介しました。
map関数やリスト内包表記を用いると、コードを簡潔に記載することができます。
見やすいコードはバグ防止にもなりますので、map関数やリスト内包表記の基本的な使い方は覚えておくようにしましょう。
スポンサーリンク