我可以用范围功能替换while循环吗?我正在使用以下代码
check = 0
while check<5:
print check
check+=2
我是按照以下方式写作的
for _check in range(0,5,2):
print _check
这是正确的方法吗?
&GT;编辑我的问题
如果我没有在循环中使用_check变量。我可以避免宣布
答案 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)
由于端点未包含在值中,因此在此处使用5
或6
作为端点并不重要,只需从输入参数中为您计算。
如果您没有使用循环变量,可以使用_
表示您在循环中忽略它。这只是一个命名约定:
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