読者です 読者をやめる 読者になる 読者になる

コンパイラかく語りき

文系新卒プログラマーのメモ

【Python3】内包表記で生成したリストをjoinしたりスライス反転したり

Python

Python初心者です。

考えてみれば当然なんですが、初心者的には感動したのでメモ。内包表記で生成したリストをごにょごにょする方法。

 

発端はこちらの競技プログラミングの問題。

abc004.contest.atcoder.jp

 

4x4の盤状の入力が与えられるので、180度回転して出力してね!とのこと。

 

1234

aabb

abcd

3344

 と入力されたら、

4433

dcba

bbaa

4321

と出力しなさい。という問題です。 

 

解答はこんな感じになりました。

gist531b59931b2939e3cb5fe6a87b8666ed

 

解説

というほどのものではないですが。

 

ここがミソですね。

gistbc1af3435466df2c79998107e285eeef

結局、内包表記はリストを返すので、そのリストをスライスを使って反転して([::-1])、joinで文字列化しています。

 

外側の内包表記は単なる繰り返し指定なので、反転文字列が4つ格納されたリストが生成されます。

さらにそのリストに対して、スライスを使って反転させます。

これで、180度回転したことになりますね!

 

というわけで、内包表記で生成したリストといえど、もろもろの関数が適用できるよ!という話でした。