Как насчет использования iter
и потребления первого элемента?
Редактировать: Возвращаясь к вопросу ОП, есть общая операция, которую вы хотите выполнить со всеми элементами, а затем одна операция, которую вы хотите выполнить с первым элементом, а другая - с остальными. .
Если это всего лишь один вызов функции, я бы сказал, что просто напишите это дважды. Это не конец миру. Если это более сложно, вы можете использовать декоратор, чтобы обернуть вашу «первую» функцию и функцию «отдых» обычной операцией.
def common(item):
print "common (x**2):", item**2
def wrap_common(func):
"""Wraps `func` with a common operation"""
def wrapped(item):
func(item)
common(item)
return wrapped
@wrap_common
def first(item):
"""Performed on first item"""
print "first:", item+2
@wrap_common
def rest(item):
"""Performed on rest of items"""
print "rest:", item+5
items = iter(range(5))
first(items.next())
for item in items:
rest(item)
Выход:
first: 2
common (x**2): 0
rest: 6
common (x**2): 1
rest: 7
common (x**2): 4
rest: 8
common (x**2): 9
rest: 9
common (x**2): 16
или вы можете сделать ломтик:
first(items[0])
for item in items[1:]:
rest(item)