питонический способ итерации по части списка

Я хочу перебрать все элементы списка, кроме первых нескольких, например:

for line in lines[2:]:
    foo(line)

Это лаконично, но копирует весь список, что лишнее. Я мог бы сделать:

del lines[0:2]
for line in lines:
    foo(line)

Но это изменяет список, что не всегда хорошо.

Я могу сделать так:

for i in xrange(2, len(lines)):
    line = lines[i]
    foo(line)

Но это просто отвратительно.

Лучше было бы сделать так:

for i,line in enumerate(lines):
    if i < 2: continue
    foo(line)

Но это не так очевидно, как в первом примере.

Итак: Какой способ сделать это так же очевидно, как первый пример, но не копировать список без необходимости?

51
задан ekhumoro 10 August 2019 в 01:18
поделиться