標準入力で複数行(文字列)を読み込む方法について(続き)

標準入力で複数行(文字列)をリストに格納する方法についての続き。

readでは読み込んだ文字列を変数に代入した後にsplitで分けてリストを作っている。
readlineとinputは1行ずつ読み込む方法なのでforループを使ってリストに格納していく。
readlinesはリストに読み込むが改行を含んでいるためforループで改行を取り除いて再度リストに格納する。
いずれも複数行でコードを書く必要がある。

しかし、内包表記を使用すれば1行でコードを書くことができる。

同じく、

abcdef
ghijkl
mnopqr
stuvwxyz

について、

①inputの場合、

array_d2 = [input() for i in range(4)]

として、
print(array_d2)で表示すると、
['abcdef', 'ghijkl', 'mnopqr', 'stuvwxyz']
と、リストに格納されていることが分かる。

②同じくreadlineについても

array_b2 =  [sys.stdin.readline().rstrip() for i in range(4)]

とするとリストに格納される。

ただしinputとreadlineは元の文字列の行数が分かっている必要がある。

③readlinesを使えば元の文字列の行数が分からなくてもリストに格納できる。

array_c2 = [line.rstrip() for line in sys.stdin.readlines()]

として、
print(array_c2)で表示すると、
['abcdef', 'ghijkl', 'mnopqr', 'stuvwxyz']
と、きちんとリストに格納されている。

まとめ:
リスト名 =  [line.rstrip() for line in sys.stdin.readlines()]
で複数行の文字列をリストに格納することができる。

行数が分かっていれば、
リスト名 = [input() for i in range(行数)]
でもリストに入れることができる。
 ([sys.stdin.readline().rstrip() for i in range(行数)]でも同じ)

0 件のコメント:

コメントを投稿

python print

print_pythonnote print ¶ 言葉や数値を出力する ¶ In [ ]: print ( "...