用范围功能替换while循环

use*_*443 0 python python-2.7

我可以用范围功能替换while循环.我正在使用以下代码

check = 0
while check<5:
      print check
      check+=2
Run Code Online (Sandbox Code Playgroud)

我是按照以下方式写作的

for _check in range(0,5,2):
     print _check
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?

>编辑我的问题

如果我没有在循环中使用_check变量.我也可以避免宣布

Mar*_*ers 7

是的,你使用range()正确,但你可能想在xrange()这里使用:

for check in xrange(0, 5, 2):
    print check
Run Code Online (Sandbox Code Playgroud)

xrange() 迭代时产生相同的结果,但不会首先构建所有可能索引的完整列表,因此使用更少的内存:

>>> range(0, 5, 2)
[0, 2, 4]
>>> xrange(0, 5, 2)
xrange(0, 6, 2)
Run Code Online (Sandbox Code Playgroud)

由于端点不包含在值中,因此无论您使用56此处作为端点,它都只是根据输入参数为您计算的.

如果您没有使用循环变量,则可以_用来表示您在循环中忽略它.这只是一个命名约定:

for _ in xrange(0, 5, 2):
    # do something 3 times.
Run Code Online (Sandbox Code Playgroud)

在这种情况下,您也可以只计算0到5之间的索引数,步长为2,并简化循环:

upper_limit, step = 5, 2
for _ in xrange((upper_limit - 1 + step) // step):
    # do something 3 times.
Run Code Online (Sandbox Code Playgroud)