Sve*_*mir 30 python performance loops for-loop while-loop
在Python中,您有两种不止一次重复某些操作的好方法.其中一个是while循环,另一个是for循环.那么让我们来看看两个简单的代码:
for i in range(n):
do_sth()
Run Code Online (Sandbox Code Playgroud)
和另外一个:
i = 0
while i < n:
do_sth()
i += 1
Run Code Online (Sandbox Code Playgroud)
我的问题是哪一个更好.当然,第一个在文档示例中非常常见,在Internet上可以找到各种代码,它更优雅,更短,但另一方面它创建了一个完全无用的整数列表,只是为了循环他们.这不是浪费内存,特别是涉及大量的迭代吗?
那么您怎么看?哪种方式更好?
Amb*_*ber 41
但另一方面,它创建了一个完全无用的整数列表,只是为了遍历它们.这不是浪费内存,特别是涉及大量的迭代吗?
这xrange(n)是为了什么.它避免了创建数字列表,而只是提供了一个迭代器对象.
在Python 3中,xrange()重命名为range()- 如果你想要一个列表,你必须通过它专门请求它list(range(n)).
Joh*_*ooy 15
这比xrange(和while循环)重量轻,因为它甚至不需要创建int对象.它在Python2和Python3中也同样有效
from itertools import repeat
for i in repeat(None, 10):
do_sth()
Run Code Online (Sandbox Code Playgroud)
wah*_*aha 11
只需使用range():
for _ in range(n):
# do something n times exactly
Run Code Online (Sandbox Code Playgroud)