python简单迭代

nos*_*nos 6 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
Run Code Online (Sandbox Code Playgroud)

非常感谢

Kar*_*tel 6

第一个被认为是惯用的.在Python 2.x中,使用xrange而不是range.


Raf*_*ler 5

for循环更简洁,更易读。while循环在Python中很少使用(除外while True)。

一点惯用的Python:如果您尝试在一定范围内执行一定次数的操作(无需使用计数器),则将计数器命名为好习惯_。例:

for _ in range(1000):
    # do something 1000 times
Run Code Online (Sandbox Code Playgroud)


Chr*_*gan 5

在 Python 2 中,使用

for i in xrange(1000):
    pass
Run Code Online (Sandbox Code Playgroud)

在 Python 3 中,使用

for i in range(1000):
    pass
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

xrange在这种情况下更可取,range因为它生成一个生成器而不是整个列表[0, 1, 2, ..., 998, 999]。它也会使用更少的内存。如果您需要一次处理所有实际列表,那就需要使用range. 通常你想要xrange:这就是为什么在 Python 3 中,xrange(...)成为range(...)range(...)成为list(range(...))