【Python】複数行から複数の入力を受け取る

input()関数でキーボードからの入力を受け取り、
split()関数で文字列を区切り文字で分割する。
それをfor文で入力の行数だけ繰り返す。

・各行の文字列を1次元配列として入力する場合
文字列が1次元配列として入力されるため、変換する必要はない。

a, b, c = [input().split() for i in range(3)]

print(a, b, c)
print(type(a), type(b), type(c))

・各行の文字列を2次元配列として入力する場合
文字列が2次元配列として入力されるため、変換する必要はない。

a = [input().split() for i in range(3)]

print(a)
print(type(a))

・各行の数値(整数)を1次元配列として入力する場合
map()関数で数値に変換し、list()関数で配列に変換する必要がある。

a, b, c = [list(map(int, input().split())) for i in range(3)]

print(a, b, c)
print(type(a), type(b), type(c))

・各行の数値(整数)を2次元配列として入力する場合
map()関数で数値に変換し、list()関数で配列に変換する必要がある。

a = [list(map(int, input().split())) for i in range(3)]

print(a)
print(type(a))

・各列の文字列を1次元配列として入力する場合
各行の文字列を2次元配列として入力し、zip()関数を用いて各列の1次元配列に変換する。

a = [input().split() for i in range(3)]
a, b, c = [list(x) for x in zip(*a)]

print(a, b, c)
print(type(a), type(b), type(c))

・各列の文字列を2次元配列として入力する場合
各行の文字列を2次元配列として入力し、zip()関数を用いて各列の2次元配列に変換する。

a = [input().split() for i in range(3)]
a = [list(x) for x in zip(*a)]

print(a)
print(type(a))

・各列の数値(整数)を1次元配列として入力する場合
各行の数値を2次元配列として入力し、zip()関数を用いて各列の1次元配列に変換する。

a = [list(map(int, input().split())) for i in range(3)]
a, b, c = [list(x) for x in zip(*a)]

print(a, b, c)
print(type(a), type(b), type(c))

・各列の数値(整数)を2次元配列として入力する場合
各行の数値を2次元配列として入力し、zip()関数を用いて各列の2次元配列に変換する。

a = [list(map(int, input().split())) for i in range(3)]
a = [list(x) for x in zip(*a)]

print(a)
print(type(a))

参考

組み込み関数 — Python 3.9.1 ドキュメント

コメント

タイトルとURLをコピーしました