我想问一下进行简单迭代的最佳方法是什么。假设我想重复某项任务1000次,以下哪项是最好的?还是有更好的方法?
for i in range(1000):
do something with no reference to i
i = 0
while i < 1000:
do something with no reference to i
i += 1
非常感谢
答案 0 :(得分:5)
for
循环更简洁,更易读。 while循环很少在Python中使用(while True
除外)。
一些惯用的Python:如果你试图用范围做一些固定的事情(不需要使用计数器),那么最好将计数器命名为_
。例如:
for _ in range(1000):
# do something 1000 times
答案 1 :(得分:5)
第一个被认为是惯用的。在Python 2.x中,使用xrange
代替range
。
答案 2 :(得分:4)
在Python 2中,使用
for i in xrange(1000):
pass
在Python 3中,使用
for i in range(1000):
pass
Python 2.6的性能数据:
$ python -s -m timeit '' 'i = 0
> while i < 1000:
> i += 1'
10000 loops, best of 3: 71.1 usec per loop
$ python -s -m timeit '' 'for i in range(1000): pass'
10000 loops, best of 3: 28.8 usec per loop
$ python -s -m timeit '' 'for i in xrange(1000): pass'
10000 loops, best of 3: 21.9 usec per loop
在这种情况下, xrange
优于range
,因为它生成的是生成器,而不是整个列表[0, 1, 2, ..., 998, 999]
。它也会使用更少的内存。如果您需要实际列表同时使用所有列表,那就是您使用range
时的情况。通常你需要xrange
:这就是为什么在Python 3中,xrange(...)
变为range(...)
而range(...)
变为list(range(...))
。
答案 3 :(得分:0)
第一。因为整数是在内部层而不是解释器中完成的。还少一个全局变量。