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)
[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)
['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)
['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)
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)
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)
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)
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