第56回【Python】末尾への要素の追加、指定位置への要素の追加

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

はじめに

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

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

AWS の進化が早すぎて、追いかけるのが大変です。最近、新たに勉強を始めたメンバーから質問を受けて、そんなサービスあるの? ってことがありました。AWS は奥が深い。底知れないです。

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

末尾への要素の追加

配列 A と追加する要素 B が与えられるので、B を A の末尾に追加したのち、A の全ての要素を出力してください。


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

・1 ≦ N ≦ 100
・0 ≦ A_i , B ≦ 100 (1 ≦ i ≦ N)


5
1
2
3
4
5
10

配列の末尾に要素を追加。これもよくあるパターン。

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

指定位置への要素の追加

配列 A と追加する位置 n と追加する要素 B が与えられるので、B を A_n の後ろに追加した後の A を出力してください。


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

・1 ≦ N ≦ 100
・0 ≦ A_i , B ≦ 100 (1 ≦ i ≦ N)
・1 ≦ n ≦ N


5
1
2
3
4
5
3 10

配列の指定位置に要素を追加。これもよくあるパターン。

Python
N = int(input())
A = [int(input()) for _ in range(N)]
n,B = map(int,input().split())
A.insert(n,B)
print(*A,sep="\n")
VBA
N = Cells(1, 1)
Dim A() As Integer
ReDim A(N - 1)
For i = 0 To N - 1
    A(i) = Cells(i + 2, 1)
Next
pB = Split(Cells(N + 2, 1), " ")
p = Val(pB(0))
B = Val(pB(1))
ReDim Preserve A(N)
For i = N To p + 1 Step -1
    A(i) = A(i - 1)
Next
A(p) = B
For Each v In A
    Debug.Print v
Next

VBA だと配列に要素を追加するのがめんどくさい。

最後に

Python では数行で書くことができるのに、VBA ではとてもめんどくさい遠回りな書き方をしなければならない。頭の中をよく整理して、どこに挿入するのかを明確にイメージできないと、ズレてしまいそう。

配列の操作はいろいろな場面で使うことが多いと思うので、しっかりマスターしておきたい。まぁ、VBA でこんな面倒な使い方するかどうかは謎だけれど。どこかの誰かの参考になっていれば幸いです。

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

Pythonpaiza,学習,Python

Posted by LeoSaki