第26回【Python】要素数の出力、全要素の出力

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

はじめに

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

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

実務でガッツリ Python でコードを書くことがあります。そんな時、基礎がきちんとできていて良かったと実感します。昔々、調べながらの自己流で書いていた頃のコードは、今となっては読む気がおきないレベル。役に立つことを実感すると、更に身が入るってもんです。

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

要素数の出力

以下の二次元配列を宣言し、要素数を出力してください。

1 2 3 4 5 6
8 1 3 3 1 8

今度は 2 次元配列か。多次元配列を頭の中で組み立てるのはそんなに得意じゃないです。大抵、手元に置いた紙に手書きでイメージを書きなぐりながら進めます。

Python
L = [[1, 2, 3, 4, 5, 6], [8, 1, 3, 1, 3, 8]]
ans = 0
for li in L:
    ans += len(li)
print(ans)

公式の回答とは似ても似つかぬ回答になりましたが、他の人が見てわかりやすいだろう、的なノリです。

Python(公式)
li = [[1, 2, 3, 4, 5, 6], [8, 1, 3, 1, 3, 8]]
print(len(li) * len(li[0]))
VBA
L = [{1, 2, 3, 4, 5, 6; 8, 1, 3, 1, 3, 8}]
Debug.Print UBound(L, 1) * UBound(L, 2)

VBA のこの書き方は独特でいつまで経っても慣れない。まぁ、VBA の場合、どうにもならんときはセルにぶちこめ、なので、ほとんど使ったことはないのだけれど。

全要素の出力

以下の二次元配列を宣言し、全要素を各行ずつ半角スペース区切りで出力し、行の終わりで改行してください。

6 5 4 3 2 1
3 1 8 8 1 3

要素数を出して、全要素を出力する。いつものパターンだ。

Python
L = [[6, 5, 4, 3, 2, 1], [3, 1, 8, 8, 1, 3]]
for li in L:
    print(*li,sep=" ")

とてもシンプルで素敵。

Python(公式)
li = [[6, 5, 4, 3, 2, 1], [3, 1, 8, 8, 1, 3]]
for i in range(len(li)):
    for j in range(len(li[i])):
        print(li[i][j], end="")
        if j < len(li[i]) - 1:
            print(end=" ")
        else:
            print()

要素を一つずつ添字で出力する勉強なのですね。末尾に改行を入れるやり方なんかは、実は、必要になることが多いパターンな気がするので、ちゃんと勉強勉強。

VBA
L = [{6, 5, 4, 3, 2, 1; 3, 1, 8, 8, 1, 3}]
For i = LBound(L, 1) To UBound(L, 1)
    For j = LBound(L, 2) To UBound(L, 2)
        If j = UBound(L, 2) Then
            Debug.Print L(i, j)
        Else
            Debug.Print L(i, j);
        End If
    Next
Next

やっていることは簡単なことなんだけれど、ちょっと複雑に見えて嫌だなぁ。

最後に

多次元は VBA は向いていない、ことはないんだけれど、セルでどうにかすればいいや、的な考えが身に沁みついてしまっていて、ちょっと面倒に思ってしまう。

それに引き換え、Python での多次元配列の扱いは楽で面白いと思う。

実際問題として、実務では単純に print だけするようなことはないわけだから、もっといろいろな引き出しを勉強して作っていかないといけないのだろうけれど、現段階の学習では、じゅうぶん!

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

Python学習,Python,paiza

Posted by LeoSaki