Qué es un list comprehension?
Un list comprehension es una lista comprimida, osea que reduce su tamaño en cuanto a su sintaxis.
Ejemplo en código sin condicionales:
# Sin comprehension
numbers = []
for i in range(1, 10 + 1):
numbers.append(i**2)
print(numbers)
# Con comprehension
numbers_2 = [i**2 for i in range(1, 10 + 1)]
Ejemplo con condicionales:
# Sin comprehension
squares = []
for i in range(1, 10 + 1):
if i % 2 == 0:
squares.append(i**2)
print(squares)
# Con comprehension
squares_2 = [i**2 for i in range(1, 10+1) if i % 2 == 0]
print(squares_2)
Quiero agregar que se pueden usar operadores ternarios:
[element if conditional else element for element in iterable]
Ejemplos:
par_impar = ['par' if i % 2 == 0 else 'impar' for i in range(1, 11)]
# Output:
['impar', 'par', 'impar', 'par', 'impar', 'par', 'impar', 'par', 'impar', 'par']
<aside> 📌 Resumen: Las list comprehension son una forma de comprimir las listas dándoles más legibilidad una vez dominas estas mismas.
</aside>
Qué es un dictionary comprehension?
Qué hace zip?
Un Dictionary Comprehension al igual que los list comprehensions de comprimir un diccionario.
Sintaxis:
# Sin comprehemsion
dic_v1 = {}
for i in range(1,11):
dic_v1[i] = i * 2
# Con comprehension
dictionary = {i: i*2 for i in range(1, 11)}
import random
# sin comprehension
contries_mercosur = ['ar','br','pr','uy']
population = {}
for i in contries_mercosur:
population[i] = random.randint(3,220)
print(population)
# con comprehension
pop_v2 = {i: random.randint(3,220) for i in contries_mercosur}
names = ['pedro','marcelo','cacho']
ages = [21,54,35]
# sin comprehension
list(zip(names,ages))
# Output
[('pedro',21),('marcelo',54),('cacho',35)]
# con comprehension
new_dic = {names: ages for (names,ages) in zip(names,ages)}
Zip: es un high oreder function en el cual puedes juntar dos elementos en una tupla.
<aside> 📌 Resumen: Hemos visto como funciona un dictionary comprehension aunque esto no es todo, aún podemos agregarle condicionales.
</aside>
<aside> 📌 Resumen: Los condicionales se pueden usar de igual forma que en los list comprehensions, también puedes usar operadores ternarios.
</aside>