Pythonのリストは、C言語の配列のようなもの。
同じ箱が複数あって、添字でアクセスできる。
でも言語が違うので、もちろん同じなわけじゃないのよね。
それで、逆に期待しちゃった部分もあるんだけど。
Pythonのリストも自動的に増えてはくれない
C言語の配列だと、変数はきちんと宣言しなきゃいけないし、個数もあらかじめ決めておいて、いっしょに宣言しなきゃいけない。
(ま、malloc()して確保したメモリを配列的に扱うっていう方法はあるけれど。)
でも、Pythonだったら個数を宣言しなくても、値を代入しちゃえば自動的に数も増えてくれるのかぁ?って実は期待してた。
l = []
って空のリストを宣言したとしても、
l[0] = 1
l[1] = 10
ってやれると思ってた。
原稿
甘かった。
やっぱりそんなわけないのね。
まーよく考えれば、
l[0] = 1
l[1] = 10
l[3] = 20
ってやったら、添字が2のところはどうなるの?って話だし。
でも、自動じゃないけれど、動的にはリストを増やしていける。
append()っていうのを使えばいい。
l.append(2)
l.append(3)
って書けば、リストの最後に追加してくれる。
いちいちリストをいくつ分用意すればいいのか考えなくていいのは嬉しいわ。
リストには他にも便利な関数が用意されているみたいで、C言語だったらいちいち自分でコードを書かなきゃいけなかった処理も、関数呼ぶだけで済んじゃうかもしれない。
for文で添字を使う必要がない
Pythonだとfor文で添字を使う必要がないのよね。
というか、for文の意味合いがC言語のとは少し違うのよね。
C言語だと、変数の値がここからここまでループする、って感じだけど、Pythonはリストなど反復可能オブジェクトを1つずつ取り出しながらループする感じ。
もし回数でとか添字0から10までとかでループしたければ、Range()を使う。
ループの中では、いちいち添字じゃなくて、ループ変数に格納されたものを直接扱えるから便利なんだけど、逆にそれがなんか不安なのよね。
なんかパンツのゴムが緩いみたいで。
添字で0、1、…ってやっていかないと、本当に大丈夫?って。
単にわたしが慣れてないだけなんだけどね。
リスト以外の反復可能オブジェクトもあるし、それ含めて考えたらこっちじゃないと逆に不便だわよね。
コメント