在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