Incrementing a for loop, inside the loop

后端 未结 4 929
伪装坚强ぢ
伪装坚强ぢ 2021-01-05 12:30

Is it possible to increment a for loop inside of the loop in python 3?

for example:

for i in range(0, len(foo_list)):
    if foo_list[i] < bar
            


        
相关标签:
4条回答
  • 2021-01-05 13:04
    while i < end:
      # do stuff
      # maybe i +=1
      # or maybe i += 4
    

    I suppose you could do this in a for loop if you tried, but it's not advisable. The whole point of python's for loop is to look at items, not indices

    0 讨论(0)
  • 2021-01-05 13:06

    a bit hackish...

    >>> b = iter(range(10))
    >>> for i in b:
    ...     print(i)
    ...     if i==5 : i = next(b)
    ... 
    0
    1
    2
    3
    4
    5
    7
    8
    9
    >>> 
    
    0 讨论(0)
  • 2021-01-05 13:11

    You could use a while loop and increment i based on the condition:

    while i < (len(foo_list)): 
        if foo_list[i] < bar: # if condition is True increment by 4
            i += 4
        else: 
            i += 1 # else just increment 1 by one and check next `foo_list[i]`
    

    Using a for loop i will always return to the next value in the range:

    foo_list = [1,2,3,4,5,6]
    bar = 6
    for i in range(len(foo_list)):
        print("range i ",i)
        if foo_list[i] < bar:
            i += 4
            print("if i",i)
    
    
    ('range i ', 0)
    ('if i', 4)
    ('range i ', 1)
    ('if i', 5)
    ('range i ', 2)
    ('if i', 6)
    ('range i ', 3)
    ('if i', 7)
    ('range i ', 4)
    ('if i', 8)
    ('range i ', 5)
    
    0 讨论(0)
  • 2021-01-05 13:13

    In your example as written i will be reset at each new iteration of the loop (which may seem a little counterintuitive), as seen here:

    foo_list = [1, 2, 3]
    
    for i in range(len(foo_list)):
        print('Before increment:', i)
        i += 4
        print('After increment', i)
    
    >>>
    Before increment: 0
    After increment 4
    Before increment: 1
    After increment 5
    Before increment: 2
    After increment 6
    

    continue is the standard/safe way to skip to the next single iteration of a loop, but it would be far more awkward to chain continues together than to just use a while loop as others suggested.

    0 讨论(0)
提交回复
热议问题