在for循環中訪問以前迭代中的值的最好和最快的方法是什麼?假定對象將非常大(例如,一個遊標對象有超過10萬條記錄)使用訪問循環中最後一次迭代的值的最佳方式
一個簡單的例子:
tmp = [
['xyz', 335], ['zzz', 338], ['yyy', 339], ['yyy', 442],
['abc', 443], ['efg', 444], ['ttt', 446], ['fff', 447]
]
for x in tmp:
if not prev:
prev = x[1]
print 'seq: ', x[1], 'prev seq:', prev, 'variance: ', x[1]-prev
prev = x[1]
這是處理這一最優化的方式?
基於響應下面我做了一些測試: TMP與500個列表創建,運行它20倍的平均如下所示。
結果:
礦業:0623
戴夫snippet1:0605
戴夫snippet2:0586
Catchmeifyoutry(編輯代碼):0707
另一個注意:這些類型的循環可能會受益於使用真正容易使用Python的JIT編譯器:http://psyco.sourceforge.net/ – catchmeifyoutry 2009-12-09 22:23:19
有趣的是,在WinXP上網本(yeah)上使用python 2.5,沒有psyco我的izip解決方案比解決方案快,但比Dave慢(使用範圍( 100000)),但使用psyco,您的解決方案要快得多,然後是Dave's,然後是我的解決方案。 – catchmeifyoutry 2009-12-09 22:51:50