for或while循环做n次

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)).

  • 我想指出,虽然内存效率较低(没有 `xrange`),但 for 循环要快得多,没有额外的比较和添加。 (2认同)

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)

  • 代码高尔夫很不方便.不确定为什么人们认为导入是某种问题.除了真正的程序有一堆导入和itertools有很多你应该使用的东西. (7认同)
  • @F1Rumors,通常不鼓励纯粹为了副作用而使用列表理解。 (2认同)

wah*_*aha 11

蟒蛇3和蟒蛇2

只需使用range()

for _ in range(n):
    # do something n times exactly
Run Code Online (Sandbox Code Playgroud)