[pyar] [Consulta] Comprensión de listas y Generadores

Roberto Alsina ralsina en netmanagers.com.ar
Sab Jun 22 00:06:11 ART 2013


On 21/06/13 23:22, Apokalyptica Painkiller wrote:
> Buenas gente, les vuelvo a molestar con mis preguntas.
>
> En qué caso utilizaría comprensión y porqué y lo mismo para generadores.
>

Listas por comprensión:

1) Cuando la alternativa es escribir un loop DE POQUITAS LINEAS que crea
una lista.

Ejemplo tonto:

l=[]
for x in range(10):
    l.append(x**2)

Es peor que

l = [x**2 for x in range(10)]

2) Cuando querés filtrar una lista, porque es más lindo que filter()

pares = [x for x in range(100) if x%2 == 0]

es mejor que

pares=filter(lambda x: not x%2, range(100))

Cuando *no* está bueno usarlas?

1) Cuando no querés la lista de resultado:

[os.system(cmd) for cmd in comandos]

Es peor que

for cmd in comandos: os.system(cmd)  # Si, en una sola línea, y qué.

2) Cuando lo de adentro es complicado. Rápido, que hace esto?

l = [[x**2 for x in range(1, z**2)] for z in [random.randint(1,10) for x
in range(100)]]



More information about the pyar mailing list