Pythonの2次元配列に格納した文字列を数値に置換する方法についてメモ。
たとえば標準入力で以下のように数字が渡される。

3
1 2
3 4
5 6

1行目は2行目移行の標準入力の繰り返し回数。
で、2行目移行の数値は2次元配列に格納したい。

arr = []
n = int(input())
for i in range(n):
    arr.append(input().split())
print(arr)
>>>[['1', '2'], ['3', '4'], ['5', '6']]

このときinput().split()で入力を受け取ると、文字列のリストとして入力される。
これをintに変換したい。

forで変換する場合

for i in range(len(arr)):
    for j in range(len(arr[i])):
        arr[i][j] = int(arr[i][j])
print(arr)
>>>[[1, 2], [3, 4], [5, 6]]

リスト内包表示で変換する場合

arr = [[int(x) for x in y] for y in arr]
print(arr)
>>>[[1, 2], [3, 4], [5, 6]]

おまけ:1次元配列にしちゃう場合

arr = [int(x) for y in arr for x in y]
print(arr)
>>>[1, 2, 3, 4, 5, 6]
TOP