Python - Función Zip
#10 ejemplos utilizando la función Zip en Python:
#1. Combinar dos listas en una lista de tuplas:
a = [1, 2, 3]
b = ['a', 'b', 'c']
c = list(zip(a, b))
print(c) # [(1, 'a'), (2, 'b'), (3, 'c')]
#2. Combinar dos listas en un diccionario:
a = [1, 2, 3]
b = ['a', 'b', 'c']
c = dict(zip(a, b))
print(c) # {1: 'a', 2: 'b', 3: 'c'}
#3. Combinar tres listas en una lista de tuplas:
a = [1, 2, 3]
b = ['a', 'b', 'c']
c = [True, False, True]
d = list(zip(a, b, c))
print(d) # [(1, 'a', True), (2, 'b', False), (3, 'c', True)]
#4. Combinar dos listas de diferentes longitudes:
a = [1, 2, 3]
b = ['a', 'b']
c = list(zip(a, b))
print(c) # [(1, 'a'), (2, 'b')]
#5. Combinar dos listas y aplicar una función
#a cada par de elementos:
a = [1, 2, 3]
b = [4, 5, 6]
c = [sum(pair) for pair in zip(a, b)]
print(c) # [5, 7, 9]
#6. Combinar dos listas y aplicar una función
#a cada par de elementos con argumentos adicionales:
a = [1, 2, 3]
b = [4, 5, 6]
c = [pow(pair[0], pair[1]) for pair in zip(a, b)]
print(c) # [1, 32, 729]
#7. Combinar dos listas y filtrar los pares de elementos
#que cumplen una condición:
a = [1, 2, 3]
b = [4, 5, 6]
c = [pair for pair in zip(a, b) if sum(pair) > 5]
print(c) # [(2, 5), (3, 6)]
#8. Combinar dos listas y filtrar los pares de elementos
#que cumplen una condición con una función:
a = [1, 2, 3]
b = [4, 5, 6]
c = [pair for pair in zip(a, b) if pow(pair[0], pair[1]) > 10]
print(c) # [(2, 4)]
#9. Combinar dos listas y aplicar una función
#a cada par de elementos con una condición:
a = [1, 2, 3]
b = [4, 5, 6]
c = [sum(pair) if sum(pair) > 5 else 0 for pair in zip(a, b)]
print(c) # [0, 7, 9]
#10. Combinar dos listas y aplicar una función a cada par de elementos
#con una condición utilizando una función lambda:
a = [1, 2, 3]
b = [4, 5, 6]
c = [(lambda x, y: sum((x, y)) if sum((x, y)) > 5 else 0)(*pair) for pair in zip(a, b)]
print(c) # [0, 7, 9]
##########################################################
#4 ejemplos utilizando la función zip_longest en Python:
#1. Combinar dos listas de diferentes longitudes
#con un valor predeterminado:
from itertools import zip_longest
a = [1, 2, 3]
b = ['a', 'b']
c = list(zip_longest(a, b, fillvalue=0))
print(c) # [(1, 'a'), (2, 'b'), (3, 0)]
#2. Combinar dos listas y aplicar una función a cada par de elementos
# con argumentos adicionales y un valor predeterminado:
from itertools import zip_longest
a = [1, 2, 3]
b = [4, 5]
c = [pow(pair[0], pair[1], 1) for pair in zip_longest(a, b, fillvalue=0)]
print(c) # [1, 32, 1]
#3. Combinar dos listas y aplicar una función
#a cada par de elementos con una condición y un valor predeterminado:
from itertools import zip_longest
a = [1, 2, 3]
b = [4, 5]
c = [pow(pair[0], pair[1], 1) if pair[1] != 0 else 0 for pair in zip_longest(a, b, fillvalue=0)]
print(c) # [1, 32, 1]
#4. Combinar dos listas y aplicar una función a cada par de elementos
#con una condición y un valor predeterminado utilizando una función lambda:
from itertools import zip_longest
a = [1, 2, 3]
b = [4, 5]
c = [(lambda x, y: pow(x, y, 1) if y != 0 else 0)(*pair) for pair in zip_longest(a, b, fillvalue=0)]
print(c) # [1, 32, 1]