Разница будет незначительной, если ваше 1% -ое условие будет просто "первой строкой". Что могло бы сэкономить время, так это выполнить 1% за пределами цикла, а затем безоговорочно выполнить цикл для последующих элементов. Это сэкономит 99% бесполезного тестирования для условия первой строки и, что более важно, улучшит удобочитаемость вашего кода (хотя бы за счет уменьшения уровней отступа).
Использование итератора - эффективный способ сделать это разделение. Например:
iLines =iter(lines)
for line in iLines:
# do something with the first line
break
for line in iLines:
# do something else with other lines
Это будет работать со списками и с источниками, которые не могут быть проиндексированы или разрезаны. Это также учитывает более сложные условия «первой части», которые могут потребовать пропустить более одного начального элемента.
Если код, который нужно выполнить для первой строки, является «дополнением» к общему коду для всех строк, может быть проще использовать перечисление вместо переменной-флага (хотя это немного медленнее):
for i,line in enumerate(lines):
if i==0:
# do something special for the first line
# common code for all lines
Вы также можете использовать подход итератора и поместить общий код в функцию, которую вы вызываете в обоих случаях.