23.11.2012 Views

Python para todos

Python para todos

Python para todos

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

l = [0, 1, 2, 3]<br />

m = [“a”, “b”]<br />

n = [s * v for s in m<br />

for v in l<br />

if v > 0]<br />

<strong>Python</strong> <strong>para</strong> <strong>todos</strong><br />

Esta construcción sería equivalente a una serie de for-in anidados:<br />

l = [0, 1, 2, 3]<br />

m = [“a”, “b”]<br />

n = []<br />

for s in m:<br />

for v in l:<br />

if v > 0:<br />

n.append(s* v)<br />

Generadores<br />

Las expresiones generadoras funcionan de forma muy similar a la<br />

comprensión de listas. De hecho su sintaxis es exactamente igual, a<br />

excepción de que se utilizan paréntesis en lugar de corchetes:<br />

l2 = (n ** 2 for n in l)<br />

Sin embargo las expresiones generadoras se diferencian de la comprensión<br />

de listas en que no se devuelve una lista, sino un generador.<br />

>>> l2 = [n ** 2 for n in l]<br />

>>> l2<br />

[0, 1, 4, 9]<br />

>>> l2 = (n ** 2 for n in l)<br />

>>> l2<br />

<br />

Un generador es una clase especial de función que genera valores sobre<br />

los que iterar. Para devolver el siguiente valor sobre el que iterar se<br />

utiliza la palabra clave yield en lugar de return. Veamos por ejemplo<br />

un generador que devuelva números de n a m con un salto s.<br />

def mi_generador(n, m, s):<br />

while(n

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!