Python – Itertools.chain()

itertools es un módulo en Python que tiene una colección de funciones que se utilizan para manejar iteradores. Hacen iterar a través de los iterables como listas y strings muy fácilmente. Una de esas funciones de itertools es chain() .
Nota: Para obtener más información, consulte Python Itertools
 

función string()

Es una función que toma una serie de iterables y devuelve uno iterable. Agrupa todos los iterables juntos y produce un solo iterable como salida. Su salida no se puede usar directamente y, por lo tanto, se puede convertir explícitamente en iterables. Esta función pertenece a la categoría de iteradores que terminan en iteradores .
Sintaxis:  

chain (*iterables)

El funcionamiento interno de la string se puede implementar como se indica a continuación:  

def chain(*iterables):
     for it in iterables:
       for each in it:
           yield each

Ejemplo 1: Los números impares y los números pares están en listas separadas. Combínalos para formar una nueva lista única.

Python3

from itertools import chain
 
# a list of odd numbers
odd = [1, 3, 5, 7, 9]
 
# a list of even numbers
even = [2, 4, 6, 8, 10]
 
# chaining odd and even numbers
numbers = list(chain(odd, even))
 
print(numbers)
Producción: 

[1, 3, 5, 7, 9, 2, 4, 6, 8, 10]

 

Ejemplo 2: Algunas de las consonantes están en una lista. Las vocales se dan en una lista. Combínalos y también clasifícalos.

Python3

from itertools import chain
 
# some consonants
consonants = ['d', 'f', 'k', 'l', 'n', 'p']
 
# some vowels
vowels = ['a', 'e', 'i', 'o', 'u']
 
# resultatnt list
res = list(chain(consonants, vowels))
 
# sorting the list
res.sort()
 
print(res)
Producción: 

['a', 'd', 'e', 'f', 'i', 'k', 'l', 'n', 'o', 'p', 'u']

 

Ejemplo 3: en el siguiente ejemplo, cada string se considera iterable y cada carácter en ella se considera un elemento en el iterador. Por lo tanto, cada carácter se produce

Python3

from itertools import chain
 
res = list(chain('ABC', 'DEF', 'GHI', 'JKL'))
 
print(res)
Producción: 

['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L']

 

Ejemplo 4: 

Python3

from itertools import chain
 
st1 = "Geeks"
st2 = "for"
st3 = "Geeks"
 
res = list(chain(st1, st2, st3))
print("before joining :", res)
 
ans = ''.join(res)
print("After joining :", ans)
Salida:
antes de unirse: [‘G’, ‘e’, ​​’e’, ​​’k’, ‘s’, ‘f’, ‘o’, ‘r’, ‘G’, ‘e’, ​​’e’, ‘k’, ‘s’] 
Después de unirse: GeeksforGeeks
 

Función chain.from_iterable()
Es similar a chain, pero se puede usar para enstringr elementos desde un solo iterable. La diferencia se demuestra en el ejemplo dado a continuación:
Ejemplo 5:

Python3

from itertools import chain
 
li = ['ABC', 'DEF', 'GHI', 'JKL']
 
# using chain-single iterable.
res1 = list(chain(li))
 
 
res2 = list(chain.from_iterable(li))
 
print("using chain :", res1, end ="\n\n")
 
print("using chain.from_iterable :", res2)
Salida:
usando string: [‘ABC’, ‘DEF’, ‘GHI’, ‘JKL’]
usando string.from_iterable: [‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F ‘, ‘G’, ‘H’, ‘I’, ‘J’, ‘K’, ‘L’]
 

Ejemplo 6: Ahora considere una lista como la que se muestra a continuación: 

li=['123', '456', '789']

Se supone que debes calcular la suma de la lista teniendo en cuenta cada dígito. Así que la respuesta debería ser: 

1+2+3+5+6+7+8+9 = 45

Esto se puede lograr fácilmente usando el siguiente código:

Python3

from itertools import chain
 
li = ['123', '456', '789']
 
res = list(chain.from_iterable(li))
 
print("res =", res, end ="\n\n")
 
new_res = list(map(int, res))
 
print("new_res =", new_res)
 
sum_of_li = sum(new_res)
 
print("\nsum =", sum_of_li)
Producción: 

res = ['1', '2', '3', '4', '5', '6', '7', '8', '9']

new_res = [1, 2, 3, 4, 5, 6, 7, 8, 9]

sum = 45

 

Para simplificarlo, combinamos los pasos. Un enfoque optimizado se da a continuación:

Python3

from itertools import chain
 
li = ['123', '456', '789']
 
res = list(map(int, list(chain.from_iterable(li))))
 
sum_of_li = sum(res)
 
print("res =", res, end ="\n\n")
print("sum =", sum_of_li)
Producción: 

res = [1, 2, 3, 4, 5, 6, 7, 8, 9]

sum = 45

 

Publicación traducida automáticamente

Artículo escrito por erakshaya485 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *