sino significa realiza que hacer else ejemplos condicional como anidado python

significa - si anidado en python



¿Cómo tratar el último elemento en la lista de manera diferente en Python? (5)

Manera simple con una condición if:

for item in list: print "Not last: ", item if list.index(item) == len(list)-1: print "Last: ", item

Necesito hacer alguna operación especial para el último elemento en una lista. ¿Hay alguna mejor manera que esto?

array = [1,2,3,4,5] for i, val in enumerate(array): if (i+1) == len(array): // Process for the last element else: // Process for the other element


Si su secuencia no es demasiado larga, simplemente puede cortarla:

for val in array[:-1]: do_something(val) else: do_something_else(array[-1])


usando 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

Versión de la respuesta de liori para trabajar en cualquier iterable (no requiere len() o slicing)

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


for i in items: if i == items[-1]: print ''The last item is: ''+i


for item in list[:-1]: print "Not last: ", item print "Last: ", list[-1]

Si no desea hacer una copia de la lista, puede hacer un generador simple:

# itr is short for "iterable" and can be any sequence, iterator, or generator def notlast(itr): itr = iter(itr) # ensure we have an iterator prev = itr.next() for item in itr: yield prev prev = item # lst is short for "list" and does not shadow the built-in list() # ''L'' is also commonly used for a random list name lst = range(4) for x in notlast(lst): print "Not last: ", x print "Last: ", lst[-1]

Otra definición para notlast:

import itertools notlast = lambda lst:itertools.islice(lst, 0, len(lst)-1)