第54回【Python】配列の順序の反転

現在取り組んでいるのは、paiza ラーニング問題集「配列活用メニュー」になります。

はじめに

猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。

Python をゼロから勉強してみよう、のコーナー 54 回目です。

会社の子とラーメン談義をしました。LeoSaki(旦那)は、今でこそラーメンがそこそこ好きですが、最近まで食べませんでした。理由は、某テレビ番組で偉そうな S 野というおじさんが、一口味見をした出汁を寸胴ごとひっくり返したシーンを見て。ああ、ラーメンってレベル低いなぁと思ってしまった。当時(今も存在するのか)、食べるときにはしゃべるな、とか、食べる際の事細かいルールを定めた店が乱立して、自由に食べられない食べ物は食べる必要ないと思っていました。

それでは、今日も頑張ってみようと思います。

配列の順序の反転

配列 A の要素数 N と配列 A の各要素 A_1, A_2, …, A_N が与えられるので、A の要素の順序を逆にした配列 B を作成し、出力してください。


すべてのテストケースにおいて、以下の条件をみたします。

・1 ≦ N ≦ 100
・-100 ≦ A_i ≦ 100 (1 ≦ i ≦ N)


5
1
2
3
4
5

幾つかのパターンは思い浮かぶ。できるだけ簡潔に、わかりやすいコードを心掛けて書いてみよう。

Python
N = int(input())
A = [int(input()) for _ in range(N)]
print(*A[::-1],sep="\n")

スライスでリスト逆順を取得するやつ。とっても便利。なんだかんだで使うことも多い。しかし、問題文にはこう書かれていた。「A の要素の順序を逆にした配列 B を作成し、」と。これでは配列 B を作成することができていない。

Python
N = int(input())
A = [int(input()) for _ in range(N)]
B = [0]*N
i = 0
for a in A[::-1]:
    B[i] = a
    i += 1
print(*B,sep="\n")
VBA
N = Cells(1, 1)
Dim A() As Integer, B() As Integer
ReDim A(N - 1)
ReDim B(N - 1)
For i = 0 To N - 1
    A(i) = Cells(i + 2, 1)
Next
For i = 0 To N - 1
    B(i) = A(N - 1 - i)
Next
For Each v In B
    Debug.Print v
Next

VBA で書いた方が王道でわかりやすい気がしてきた。

最後に

Python で配列を反転する方法として、reverse 関数がある。もちろん、これを使う方法も引き出しとして持っていたほうが良いと思う。今回は、スライスで書いてみたけど、reverse 関数を利用する方法のほうが簡潔でわかりやすい。

VBA で書いた方が、王道なんだと思う。Python の模範解答にもあったし。天邪鬼だから最初から考えるのを放棄していたけれど。

引き続き、よろしくお願いいたします!

Python学習,Python,paiza

Posted by LeoSaki