Python For: como iterar tuplas, listas, conjuntos y diccionarios.

15/10/2017 | Autor: Eduardo Enriquez

Las listas, los conjuntos, las tuplas y los diccionarios se pueden iterar, esto es recorrer cada uno de sus elementos, de manera muy simple.

# A grandes rasgos sería así:

for <variable> in <iterable>:
    <cosas para hacer>

# Con un ejemplo:

lenguajes = ['Java', 'NET', 'C', 'Python'] 
for lenguaje in lenguajes:
    print(lenguaje)

# y el resultado sería 

... Java
... NET
... C
... Python

El for de python también se puede combinar con else para no tener que usar una variable de tipo flag:

amigos = ["juan", "judas", "jose", "pablo"]
for amigo in amigos:
    if amigo == "judas":
        print("Traidores no!")
        break
    print("Un gran amigo es {}!".format(amigo))
else:
    print("Tengo que rever mi lista de amigos!")

print("Me imprimo igual porque estoy afuera del for")

Para recorrer diccionarios:

# Python 2
d = {'juan': 29, 'pedro': 33, 'ezequiel': 53} 
for key, value in d.iteritems()::
    print "{} tiene {}".format(key, value)
# Python 3
d = {'juan': 29, 'pedro': 33, 'ezequiel': 53} 
for key, value in d.items()::
    print "{} tiene {}".format(key, value)

En python 3.x,  iteritems() se reemplazo por  items() y devuelve un conjunto, set, de las claves del diccionario. Se dice que actua como vista porque cambia si cambian las claves del diccionario "observado". Esta función también está disponible en python 2.7 con el nombre: viewitems().

Conjuntos o sets (en inglés)

Los conjuntos tienen la ventaja de no tener elementos repetidos. Si convertimos una lista por ejemplo con 5 numeros 1, el resultado va a ser un conjunto de un solo elemento:

numeros = [1, 1, 1, 1, 3, 3, 2]

conjunto_de_numeros = set(numeros)

print(conjunto_de_numeros)

>> {1, 2, 3}

Si queremos agregar un elemento usamos el metodo add.

conjunto = set([2, 2, 3, 4, 5])
conjunto.add(7)


# Si queremos preguntar cosas
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket)
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket
True
>>> 'crabgrass' in basket
False

 

 


Tags