for或while循环做n次

时间:2013-07-15 06:22:59

标签: python performance loops for-loop while-loop

在Python中,您有两种不止一次重复某些操作的好方法。其中一个是while循环,另一个是for循环。让我们来看看两个简单的代码:

for i in range(n):
    do_sth()

另一个:

i = 0
while i < n:
    do_sth()
    i += 1

我的问题是哪一个更好。当然,第一个在文档示例中非常常见,在Internet上可以找到各种代码,它更优雅,更短,但另一方面它创建了一个完全无用的整数列表,只是为了循环他们。这不是浪费内存,特别是涉及大量的迭代吗?

那么您怎么看?哪种方式更好?

3 个答案:

答案 0 :(得分:36)

  

但另一方面它创建了一个完全没用的整数列表,只是为了遍历它们。这不是浪费内存,特别是涉及大量的迭代吗?

这就是xrange(n)的用途。它避免了创建数字列表,而只是提供了一个迭代器对象。

在Python 3中,xrange()已重命名为range() - 如果您需要列表,则必须通过list(range(n))专门请求。

答案 1 :(得分:15)

这比xrange(和while循环)重量更轻,因为它甚至不需要创建int个对象。它在Python2和Python3中也同样有效。

from itertools import repeat
for i in repeat(None, 10):
    do_sth()

答案 2 :(得分:2)

大多数编程语言的根本区别在于,除非意外发生for循环总是重复n次,然后完成while循环可以重复0 times, 1, more or even forever,具体取决于给定条件,在每个循环开始时始终为真,退出循环时始终为假(为了完整性do ... while循环,(或repeat until),对于拥有它的语言,总是至少执行一次并且不保证第一次执行时的条件。)

所以你的问题的答案是'一切都取决于你想要做什么'!