lunes, 16 de febrero de 2015

Más herramientas para control de flujo - II

La sentencia for 

La sentencia for en Python difiere un poco de lo que uno puede estar acostumbrado en lenguajes como C o Pascal. En lugar de siempre iterar sobre una progresión aritmética de números (como en Pascal) o darle al usuario la posibilidad de definir tanto el paso de la iteración como la condición de fin (como en C), la sentencia for de Python itera sobre los ítems de cualquier secuencia (una lista o una cadena de texto), en el orden que aparecen en la secuencia. Por ejemplo:

>>> # Midiendo cadenas de texto
... a = ['gato', 'ventana', 'defenestrado']
>>> for x in a:
... print x, len(x)
...
gato 4
ventana 7
defenestrado 12

No es seguro modificar la secuencia sobre la que se está iterando en el lazo (esto solo es posible para
tipos de secuencias mutables, como las listas). Si se necesita modificar la lista sobre la que se está
iterando (por ejemplo, para duplicar ítems seleccionados) se debe iterar sobre una copia. La notación de rebanada es conveniente para esto:
>>> for x in a[:]: # hacer una copia por rebanada de toda la lista
... if len(x) > 6: a.insert(0, x)
...
>>> a
['defenestrado', 'ventana', 'gato', 'ventana', 'defenestrado']

No hay comentarios:

Publicar un comentario