pythonloopsfor-looprange

How to make for loop without iterator variable?


Is it possible to do following without the i?

for i in range(some_number):
    # do something

If you just want to do something N amount of times and don't need the iterator.


Solution

  • Off the top of my head, no.

    I think the best you could do is something like this:

    def loop(f,n):
        for i in xrange(n): f()
    
    loop(lambda: <insert expression here>, 5)
    

    But I think you can just live with the extra i variable.

    Here is the option to use the _ variable, which in reality, is just another variable.

    for _ in range(n):
        do_something()
    

    Note that _ is assigned the last result that returned in an interactive python session:

    >>> 1+2
    3
    >>> _
    3
    

    For this reason, I would not use it in this manner. I am unaware of any idiom as mentioned by Ryan. It can mess up your interpreter.

    >>> for _ in xrange(10): pass
    ...
    >>> _
    9
    >>> 1+2
    3
    >>> _
    9
    

    And according to Python grammar, it is an acceptable variable name:

    identifier ::= (letter|"_") (letter | digit | "_")*