在Python中,您有两种不止一次重复某些操作的好方法。其中一个是while
循环,另一个是for
循环。让我们来看看两个简单的代码:
for i in range(n):
do_sth()
另一个:
i = 0
while i < n:
do_sth()
i += 1
我的问题是哪一个更好。当然,第一个在文档示例中非常常见,在Internet上可以找到各种代码,它更优雅,更短,但另一方面它创建了一个完全无用的整数列表,只是为了循环他们。这不是浪费内存,特别是涉及大量的迭代吗?
那么您怎么看?哪种方式更好?
答案 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
),对于拥有它的语言,总是至少执行一次并且不保证第一次执行时的条件。)
所以你的问题的答案是'一切都取决于你想要做什么'!