なつある語。

Python リストの要素を違う型に変換する

Pythonのリスト[ ] 内の文字列型(str)を数値型(int・float)にまた、その逆に変換する方法の解説です。

リスト内の要素の変換

for文

for文のループを使って変換していく方法です。

a = ["1", "2", "3"]

上のような文字列としての数字を数値型へと変換していきます。

for i in range(len(a)):

for文で繰り返しの回数は len( a ) リスト a の要素の個数分に設定します。

for i in range(len(a)):
    a[i] = int(a[i])

a [ i ] = int ( a [ i ] ) でリスト a の i 番目の値をint型に変換して、格納しなおします。

a = ["1", "2", "3"]
print(a)
for i in range(len(a)):
    a[i] = int(a[i])
    
print(a)
for j in range(len(a)):
    print(type(a[j]))
['1', '2', '3']
[1, 2, 3]
<class 'int'>
<class 'int'>
<class 'int'>

内包表記

変換の方法は、for文の時と同じですが、for文より簡潔に書ける内包表記による変換方法です。

a = ["1", "2", "3"]
b = [int(i) for i in a]

bという新たなリストを作成し、aのリストの要素をint型に変換したものを格納しています。

a = ["1", "2", "3"]
b = [int(i) for i in a]

print(a)
print(b)
for j in range(len(b)):
    print(type(b[j]))
['1', '2', '3']
[1, 2, 3]
<class 'int'>
<class 'int'>
<class 'int'>

map関数

最後は、map関数による変換方法です。

a = ["1", "2", "3"]
a = map(int, a)

map ( 変換する型, リスト ) で変換はされているのですが、Python3でのmap関数では、リストを返すのではなく「イテレータ」というものを返します。

a = ["1", "2", "3"]
a = map(int, a)

print(a)
<map object at 0x000001F6517EBB88>

そこで、list( ) 関数を使用してイテレータからリストに戻し、リストaを作り変えます。

a = ["1", "2", "3"]
a = list(map(int, a))

print(a)
[1, 2, 3]

以上、リストの要素の変換方法についてでした。