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