Skip iterations in enumerated list object (python)

前端 未结 6 2138
清歌不尽
清歌不尽 2021-02-14 19:33

I have the code

for iline, line in enumerate(lines):
    ...
    if :
        

I would like, as you c

6条回答
  •  被撕碎了的回忆
    2021-02-14 19:39

    iline = 0
    while iline < len(lines):
        line = lines[iline]
        if :
            place_where_skip_happened = iline
            iline += 5
        iline += 1
    

    If you are iterating over a file object you can skip lines using next or make lines an iterator:

    lines = iter(range(20))
    
    for l in lines:
        if l == 10:
            [next(lines) for _ in range(5)]
        print(l)
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    16
    17
    18
    19
    

    It really depends on what you are iterating over and what you want to do.

    Using your own code with iter and islice:

    from itertools import islice
    
    
    it = iter(enumerate(lines))
    
    for iline, line in it:
        if :
            place_where_skip_happened = iline
            next(islice(it,5 ,5), None)
        print(line)
    

提交回复
热议问题