可以在没有迭代变量的情况下使用`for`循环吗?(如何让代码循环固定次数?)

244 投票
16 回答
160537 浏览
提问于 2025-04-15 11:23

有没有办法做到下面的事情,而不使用 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 | "_")*

撰写回答