我偶尔会发现自己写作
for i in range(n):
stuff_that_does_not_involve_i
有没有更好的方法呢?也许是类似的东西
do n times:
whatever
(请注意,第二个代码片段不是有效的Python。)
答案 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