【Pythonメモ】enumerate OrderDicts nditer
enumerate
リストをインデックス化することができます。
>> list=["a","b","c","d","e"] >>> for index,val in enumerate(list): print(index,val) (0, 'a') (1, 'b') (2, 'c') (3, 'd') (4, 'e')
OrderDicts
ディクショナリとほぼ同じだが、順序が保存出来る。
>>> tests = OrderedDict() >>> tests['test1'] = '1' >>> tests['test2'] = '2' >>> tests['test3'] = '3' >>> print tests OrderedDict([('test1', '1'), ('test2', '2'), ('test3', '3')]) >>> for k, v in fruits.items(): print(k,v) ('test1', '1') ('test2', '1') ('test3', '2')
numpy nditer
nditerを用いると、繰り返し処理が楽なる
例えば、2×3行列なら以下のように×
import numpy as np np_array = np.random.randn(2,3) print(np_array) nditer = np.nditer(np_array, flags=['multi_index']) while not nditer.finished: print(np_array[nditer.multi_index]) nditer.iternext() [[-1.10258502 -1.390158 -1.3459963 ] [ 0.92886904 -0.2251729 0.23059408]] -1.10258502292 -1.39015799755 -1.3459963044 0.928869035018 -0.225172899317 0.230594077137
pythonのみで同じ処理を書くのは以下の通り
ネストしなくていい分、nditerを使ったほうが楽です。
for test in np_array: for t in test: print(t)