Syntaxis avanzada

Uso avanzado de listas

Las listas en python pueden ser muy maleables, una de las formas de poder manipularlas es combinarlas con bucles y operadores como este ejemplo:
mi_lista=[1,2,3,4,5]
print((x * 2 for x in mi_lista))
>>> [2,4,6,8,10]
Podemos observar que la lista mi_lista es usada en conjunto con un bucle al mismo tiempo que se aplica una multiplicacion por 2 al comando print.

Uso avanzado de Diccionarios

Similar a las listas en esta usamos los valores y las llaves de cada item. Tambien se puede manipular entre estas.
mi_dicc={'a':1, 'b':2, 'c':3, 'd':4}
resultado = (k: v * 2 for k,v in mi_dicc.iteritem()))
>>>> {'a':2, 'b':4, 'c':6, 'd':8}
Lo que notamos en esta muestra es que se tienen llaves en vez de parentesis. Otra diferencia es el uso de iteritem() el cual itera sobre los diversos items del diccionario. Existen otros métodos como keys(), values() e item().

Que son los sets

En terminos matemáticos un set (conjunto) es una colección de elementos únicos. En Python podemos aplicar mucho de la teoría de conjuntos y realizar operaciones como uniones, intersecciones, producto cartesiano etc. Ejemplo de una union:
lista_a = ['a','b','c']
lista_b = ['b','d','c']
print(set(lista_a) | set(lista_b)]
>>> set(['a','c','b','d'])
Interseccion:
print(set(lista_a) & set(lista_b))
>>> set(['c','b'])
Diferenciales:
print(set(lista_a) - set(lista_b))
>>> set(['a'])
Piensa en todas las colecciones en python como si fueran sets (conjuntos). Según una subcategoria de la teoría de grupos, la teoría de colecciones se basa mucho en la aplicación de funtores las cuales llevan de objetos a otros objetos, a este proceso se le conoce como morfismo. En python esto sucede mucho en relación con las compresión de listas.

Uso de Lambdas

La definición de lambdas en Python es como una minifunción no relacionada (unbounded) esto quiere decir que a diferencia de una función tradicional, la cual relacióna la función a un módulo o instancia de clases. Las funciones lambdas usualmente funcionan solo una vez, durante el proceso de otra función, pero su relación terminará ahi mismo. Veremos un ejemplo de esto a continuación:
mi_lista = (1,2,3,4,5,6)
def mi_func(item):
      returns item + 2

print([mi_func(x) for x in mi_lista])
>>> [2,4,6,8,10,12]

otra_func = lambda x: x +2
print([otra_func(x) for x in mi_lista])
>>> [2,4,6,8,10,12]
Aqui usamos una variable como contenedor de lambda mas sine embargo no esta asociada de la manera como lo haría una función usando def.

Usando Zip en ejemplos complejos

mi_primer_lista = ['a','b','c','d','e']
mi_segunda_lista = [1,2,3,4,5]
print(zip(mi_primer_lista, mi_segunda_lista))
>>> [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]

Utilizando enumerate

En Python, enumerate regresa una tupla conteniendo una contabilidad, esta tupla la puedes desempaquetar y convertirla a una lista y tener un index para cada item de la lista, une ejemplo de esto:

print(enumerate(mi_primer_lista))


Map y Reduce


SUM


El builtin de filter


Comments