Re: Operaciónes con lista
Chema Cortes
pych3m4 en gmail.com
Jue Mayo 11 02:07:10 CEST 2006
On 5/10/06, Catalin Lungu <lcatalin en siadv.com> wrote:
> Esto es mas eficiente?
>
> lmayor = [p for p in l if p >= a]
> lmenor = [p for p in l if p < a]
> if len(lmenor) > 0:
> lstdownload = [max(lmenor)] + lmayor
>
> Y en una sola linea no hay forma, verdad?
Este problema requiere almacenar "estados" intermedios, por lo que no
veo cómo hacerlo en una sóla línea sin recorrer varias veces toda la
lista. Pero si lo que quieres son alternativas extrañas de "una sóla
iteración" te propongo ésta:
def recortaLista(L,a):
def genLista(L, a):
m=None
for i in L:
if i<a:
m=max(m,i)
else:
yield i
if m is not None:
yield m
return list(genLista(L,a))
Más información sobre la lista de distribución Python-es