python简单迭代

时间:2010-12-14 05:42:39

标签: python iteration

我想问一下进行简单迭代的最佳方法是什么。假设我想重复某项任务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

非常感谢

4 个答案:

答案 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)

第一。因为整数是在内部层而不是解释器中完成的。还少一个全局变量。