for文になれるためにいろいろ試す
for文について
PythonはJavaScriptのようなインデックスでループさせるような
for文はなく、for in でしかない。
JavaScriptで書くと
var array = new Array('A', 'B', 'C'); for(var i = 0; i < array.length; i++){ alert(i);//A B Cと出力される }
っていうのをPythonで同じようにかくと
array = ["A", "B", "C"] for i in range(len(array)): print(array[i])
となんだか不思議な書き方になる。
Pythonの場合は上のようなインデックスでループするような書き方をせず
array = ["A", "B", "C"] for i in array: print(i)
で同じ結果が得られる。
JavaScriptもfor inで書けるので同じように書いてみる。
var array = new Array('A', 'B', 'C'); for(var i in array){ alert(i); }
とすると、A B Cと出力されず、0 1 2と出力される。
JavaScriptはArrayも結局は、Objectだからだろうか。
Pythonだとインデックスではなく要素が返ってくるのに。
で、ディクショナリで試してみたら、JavaScriptのようにインデックス(キー)が
返ってきた。
Pythonでインデックスを使いたいとき
ではインデックスを使いたいときにどうするか?
答えは、上に書いた、range()とlen()を使ってやる方法。
要素を評価して、そのインデックスを返すようなループを作りたいときには、
enumerate()をつかって
array = ["A", "B", "C"] for i, j in enumerate(array): print(i, j)
と書くと、iにインデックス、jに要素が入ってくる。
ディクショナリの場合はiteritems()を使うらしい。
慣れるまでにまだまだかかりそうだ。。。