第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 の模範解答にもあったし。天邪鬼だから最初から考えるのを放棄していたけれど。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません