с помощью itertools
>>> from itertools import repeat, chain,izip
>>> for val,special in izip(array, chain(repeat(False,len(array)-1),[True])):
... print val, special
...
1 False
2 False
3 False
4 False
5 True
Версия ответа Лиори для работы на любой итерации (не требует len()
или нарезки)
def last_flagged(seq):
seq = iter(seq)
a = next(seq)
for b in seq:
yield a, False
a = b
yield a, True
mylist = [1,2,3,4,5]
for item,is_last in last_flagged(mylist):
if is_last:
print "Last: ", item
else:
print "Not last: ", item