for文の実装方法はいろいろあります。
プログラムの意図に沿ったものを使いましょう。
rangeを使ったfor文
数値のfor文はrangeを使いましょう。
少数で回したい場合はnumpy.arangeを使いましょう
for i in range(3): print(i) # 0 # 1 # 2 for i in range(3, 0, -1): print(i) # 3 # 2 # 1 # 降順で処理することも可能。
rangeの参考記事もご覧ください。
Pythonのrange関数で等間隔の値を生成するnumpy.arangeを使ったfor文
numpy.arangeは、整数と少数のfor文に便利です。
ただし、浮動小数点の誤差問題があるので、round関数を併用しましょう。
誤差問題の詳細を知りたい方は「python 浮動小数点 問題」などで検索してみてください。
少数のfor文のサンプルコードです。
for i in np.arange(0, 1, 0.2): print(i) # 0.0 # 0.2 # 0.4 # 0.6000000000000001 # 0.8 # そのままだと、浮動小数点の誤差問題が発生する。 for i in np.arange(0, 1, 0.2): print(round(i, 8)) # 0.0 # 0.2 # 0.4 # 0.6 # 0.8 # roundで浮動小数点の誤差問題を回避する。 for i in np.arange(1, 0, -0.2): print(i) # 1.0 # 0.8 # 0.6000000000000001 # 0.40000000000000013 # 0.20000000000000018 for i in np.arange(1, 0, -0.2): print(round(i, 8)) # 1.0 # 0.8 # 0.6 # 0.4 # 0.2
numpy.arangeの参考記事もご覧ください。
NumPyのarangeとlinspaceで等間隔の値を生成するlistを使ったfor文
listのfor文の書き方です。
enumerateを併用すると便利です。
l = ['aaa', 'bbb', 'ccc'] for v in l: print(v) # aaa # bbb # ccc l = ['aaa', 'bbb', 'ccc'] for i, v in enumerate(l): print(f'i:{i} v:{v}') # i:0 v:aaa # i:1 v:bbb # i:2 v:cccPythonのenumerateでfor文をすこし便利にする
dictionaryを使ったfor文
辞書型を使ったfor文です。
辞書型でもenumerateは使用できます。
d = {'aaa': 1, 'bbb': 2, 'ccc': 3} for k in d: print(f'key:{k} value:{d[k]}') # key:aaa value:1 # key:bbb value:2 # key:ccc value:3 # そのままだとキーのfor文となる。 d = {'aaa': 1, 'bbb': 2, 'ccc': 3} for k, v in d.items(): print(f'key:{k} value:{v}') # key:aaa value:1 # key:bbb value:2 # key:ccc value:3 # itemsを使うと、キーと値のfor文にできる。 d = {'aaa': 1, 'bbb': 2, 'ccc': 3} for i, (k, v) in enumerate(d.items()): print(f'i:{i} key:{k} value:{v}') # i:0 key:aaa value:1 # i:1 key:bbb value:2 # i:2 key:ccc value:3 # enumerateも使える。
keysとvaluesを使用したfor文も書けます。
d = {'aaa': 1, 'bbb': 2, 'ccc': 3} for k in d.keys(): print(k) # aaa # bbb # ccc d = {'aaa': 1, 'bbb': 2, 'ccc': 3} for v in d.values(): print(v) # 1 # 2 # 3Pythonで辞書型を作成・変更・表示・出力する