用范围功能替换while循环

时间:2014-02-25 11:19:53

标签: python python-2.7

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

check = 0
while check<5:
      print check
      check+=2

我是按照以下方式写作的

for _check in range(0,5,2):
     print _check

这是正确的方法吗?

&GT;编辑我的问题

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

2 个答案:

答案 0 :(得分:7)

是的,您正确使用range(),但您可能希望在此使用xrange()

for check in xrange(0, 5, 2):
    print check
迭代结束时,

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

>>> range(0, 5, 2)
[0, 2, 4]
>>> xrange(0, 5, 2)
xrange(0, 6, 2)

由于端点未包含在值中,因此在此处使用56作为端点并不重要,只需从输入参数中为您计算。

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

for _ in xrange(0, 5, 2):
    # do something 3 times.

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

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

答案 1 :(得分:3)

关于原始while循环,使用check = check + 1

for x in xrange(5):
    print x

有关控制流工具(如循环)的更多信息,请参阅文档here

修改

如果要在每次迭代期间增加2,可以使用上面的代码并指定增量:

for x in xrange(0,5,2):
    print x