Interpret "for i in n" as "for i in range(n)" if n is an int

Just for fun: we already have syntax for that! It’s spelled for[]in[[]]*. No int objects produced, and no dummy variable names needed. Example usage:

>>> for[]in[[]]* 5: print("Hello")
... 
Hello
Hello
Hello
Hello
Hello

The variant syntax for()in((),)* is one character longer, but likely more efficient (especially for a constant number of repetitions):

>>> dis.dis("for()in((),)* 3: print('Hello')")
  0           0 RESUME                   0

  1           2 LOAD_CONST               0 (((), (), ()))
              4 GET_ITER
        >>    6 FOR_ITER                11 (to 32)
             10 UNPACK_SEQUENCE          0
             14 PUSH_NULL
             16 LOAD_NAME                0 (print)
             18 LOAD_CONST               1 ('Hello')
             20 CALL                     1
             28 POP_TOP
             30 JUMP_BACKWARD           13 (to 6)
        >>   32 END_FOR
             34 RETURN_CONST             2 (None)

I’ll freely admit it’s not the most readable syntax …

19 Likes