第28回【Python】各行の要素数の出力、i 行目 j 列目の出力
現在取り組んでいるのは、paiza ラーニング問題集「配列メニュー」になります。
はじめに
猫とキャンプと野球観戦と AWS が大好きな旦那、LeoSaki です。モフモフしたい。
Python をゼロから勉強してみよう、のコーナー 28 回目です。
初心忘れるべからず。いつも新鮮な気持ちで挑戦するようにしています。こちらの進みは遅いように見えますが、きちんとスキルチェックに挑戦したり、別の問題集を進めたりもしています。
それでは、今日も頑張ってみようと思います。
各行の要素数の出力
以下の二次元配列を宣言し、この配列の各行の要素数を改行区切りで出力してください。
1
2 3
4 5 6
とうとう出てきました。各行の要素数が一定ではない場合の配列。いつもいつも各行の要素数が一定だなんて思うなよ。
Python
L = [[1], [2, 3], [4, 5, 6]]
for li in L:
print(len(li))
VBA
Dim L(1 To 3, 1 To 3) As Variant
L(1, 1) = 1
L(2, 1) = 2
L(2, 2) = 3
L(3, 3) = 4
L(3, 1) = 5
L(3, 2) = 6
For i = 1 To 3
cnt = 0
For j = 1 To 3
If L(i, j) Then cnt = cnt + 1
Next
Debug.Print cnt
Next
VBA の Ubound 関数は、配列の添え字・インデックスの最大値を取得する。強引に仕様通りのことはさせてみたけれど、あまり美しくない。他に書き方あるのだろうか。
i 行目 j 列目の出力
以下の二次元配列を宣言し、この配列の 2 行目 3 列目の要素を出力してください。
1 2 3
8 1 3
10 100 1
添え字がゼロからスタートすることさえ間違えなければ簡単なはず。
Python
L = [[1, 2, 3], [8, 1, 3], [10, 100, 1]]
print(L[1][2])
VBA
L = [{1, 2, 3; 8, 1, 3; 10, 100, 1}]
Debug.Print L(2, 3)
罠だ。こういう書き方をすると、添え字が 1 からスタートするらしい。分かりやすいかもしれないけれど、きちんと揃えておかないと、どこかでミスが発生する気がする。
最後に
VBA の限界を感じかけたが、強引になんとか回答に持っていくことができた。今回、一番時間がかかったのは、この VBA だったりする。
諦めたら試合終了・・・。
と、言い聞かせながら、もっと綺麗なコードが書きたいと心では泣きながら。
いや、ホント、なんかもっとうまい方法あるのかなぁ。LeoSaki(旦那)には思いつかなかった。
引き続き、よろしくお願いいたします!
ディスカッション
コメント一覧
まだ、コメントがありません