Python 简单迭代

10 投票
4 回答
28920 浏览
提问于 2025-04-16 08:30

我想问一下,最简单的循环方式是什么?假设我想把某个任务重复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 个回答

5

在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

xrangerange更好,因为它生成的是一个生成器,而不是一次性生成整个列表[0, 1, 2, ..., 998, 999]。这样会占用更少的内存。如果你需要一次性处理整个列表,那就用range。通常情况下,你会想用xrange:这就是为什么在Python 3中,xrange(...)变成了range(...),而range(...)则变成了list(range(...))

6

for循环更简洁,也更容易理解。而在Python中,while循环用得比较少,除了while True这种情况。

这里有一点Python的习惯用法:如果你想要做某件事情固定次数,并且不需要用到计数器的话,建议把计数器命名为_。举个例子:

for _ in range(1000):
    # do something 1000 times
8

第一个被认为是符合习惯用法的。在Python 2.x版本中,应该用 xrange 来代替 range

撰写回答