可以在没有迭代变量的情况下使用`for`循环吗?(如何让代码循环固定次数?)
有没有办法做到下面的事情,而不使用 i
呢?
for i in range(some_number):
# do something
如果你只是想做某件事 N 次,而不需要用到计数器的话。
16 个回答
78
通常,如果你给一个不需要用到的值命名,大家会用一个下划线_
来表示。
for _ in range(times):
do_stuff()
84
你可能在寻找
for _ in itertools.repeat(None, times): ...
这是在Python中循环times
次的最快方法。
143
我现在想不起来有什么特别的办法。
我觉得你能做的最好的就是像这样:
def loop(f,n):
for i in xrange(n): f()
loop(lambda: <insert expression here>, 5)
不过我觉得你可以就用那个多出来的 i
变量。
这里有一个使用 _
变量的选项,实际上它也只是另一个变量。
for _ in range(n):
do_something()
要注意的是,在交互式的 Python 会话中,_
会被赋值为最后返回的结果:
>>> 1+2
3
>>> _
3
所以我不建议这样使用它。我不知道 Ryan 提到的那种用法。这可能会搞乱你的解释器。
>>> for _ in xrange(10): pass
...
>>> _
9
>>> 1+2
3
>>> _
9
根据 Python 语法,它是一个可以接受的变量名:
identifier ::= (letter|"_") (letter | digit | "_")*