Python :перебирает подсписок

Как правило, когда вы хотите перебрать часть списка в Python, проще всего просто разрезать список.

# Iterate over everything except the first item in a list
#
items = [1,2,3,4]
iterrange = (x for x in items[1:])

Но оператор среза создает новый список, что во многих случаях даже не нужно делать. В идеале мне нужна какая-то функция нарезки, которая создает генераторы, а не новые объекты списка. Нечто подобное можно было бы сделать, создав выражение генератора, которое использует rangeдля возврата только определенных частей списка :

# Create a generator expression that returns everything except 
# the first item in the list
#
iterrange = (x for x, idx in zip(items, range(0, len(items))) if idx != 0)

. Но это как-то хлопотно. Мне интересно, есть ли лучший, более элегантный способ сделать это. Итак, как проще всего разрезать список так, чтобы вместо нового объекта списка создавалось выражение генератора?

17
задан Channel72 8 July 2012 в 13:54
поделиться