我想问一下进行简单迭代的最佳方法是什么.假设我想重复某项任务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)
非常感谢
该for循环更简洁,更易读。while循环在Python中很少使用(除外while True)。
一点惯用的Python:如果您尝试在一定范围内执行一定次数的操作(无需使用计数器),则将计数器命名为好习惯_。例:
for _ in range(1000):
# do something 1000 times
Run Code Online (Sandbox Code Playgroud)
在 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(...))。
| 归档时间: |
|
| 查看次数: |
11456 次 |
| 最近记录: |