題名のフォーマットを変えました.
現在の目標
今日のおはなし
結論
同じ長さの文字列やイテレータが複数存在して, それらの各要素を一か所にまとめたい場合, zip 関数が有用だよ.
解いた問題
B-回転
私の解答
my_answer.py
# coding: utf-8
N = int(input())
li = [input() for _ in range(N)]
for i in range(N):
row = ""
for j in range(N):
s = li[N-j-1][i]
row+=s
print(row)
# その後 for 以下を下記に変更
#for i in range(N):
# print("".join(li[N-j-1][i] for j in range(N)))
zip を使った解答
zip_answer.py
# coding: utf-8
N = int(input())
li = [input() for _ in range(N)]
for s in zip(*li[::-1]):
print("".join(s))
zip について調べつつ, 簡単な例で動作確認しました.
zip_example.py
a = [1,2,3]
b = [4,5,6]
c = [7,8,9]
d = [10,11,12]
print(*a) #=>1 2 3
print(list(zip(a,b,c,d))) =>[(1, 4, 7, 10), (2, 5, 8, 11), (3, 6, 9, 12)]
イテレータ同士の各要素を, ひとつのタプルに格納してくれるんですね. 引数が2つの例を見かけますが, 引数は何個でも良いようです. また, *a
とすると, イテレータの中身を展開できることも初めて知りました (アスタリスク一個の持つ機能まとめ).