Python是否可以重复给定次数而无需显式分配计数器变量?

时间:2013-12-09 01:44:51

标签: python loops python-3.x

我偶尔会发现自己写作

for i in range(n):
 stuff_that_does_not_involve_i

有没有更好的方法呢?也许是类似的东西

do n times:
 whatever

(请注意,第二个代码片段不是有效的Python。)

3 个答案:

答案 0 :(得分:3)

按照惯例,如果您不关心循环变量的值是什么,请将其命名为_

所以:

for _ in range(n):
  stuff

答案 1 :(得分:1)

不,你必须使用for循环来实现这种功能。

但是,如果您不打算在循环体中使用计数器变量,那么您应该用下划线替换它:

>>> for _ in range(10):
...     print('hi')
...
hi
hi
hi
hi
hi
hi
hi
hi
hi
hi
>>>

按照惯例,这意味着您不会在for循环中使用计数器变量。

答案 2 :(得分:0)

使用下划线表示迭代器值未使用或不重要。另外,如果重复某事的次数很多,或者调用break语句的概率很高,那么请改用迭代器:

for _ in xrange(100):
    pass # this block repeated 100 times

使用像xrange这样的迭代器的好处是没有创建数组,因此它可以节省内存。

请注意,在大多数系统/发行版中,Python的xrange最大计数为2147483647(即2 ^ 31 - 1)。如果你需要迭代多次,你可以自己包装:

def longxrange(n):
    i = 0
    while i < n:
        yield i
        i += 1

for _ in longxrange(10000000000):
    pass # this block repeated 10,000,000,000 times