Todo lo que necesita saber sobre el módulo Python Itertools

Todo lo que necesita saber sobre el módulo Python Itertools

Itertools es uno de los módulos más útiles que ofrece Python. Sus funciones facilitan el trabajo con listas y matrices. Ya sea que necesite todas las permutaciones de valores en una matriz o desee agrupar caracteres de una cadena, Itertools puede ayudarlo.

Escribir código para estos casos comunes puede ser tedioso y propenso a errores. Como resultado, los desarrolladores han creado bibliotecas para hacer todo esto por usted. Puede utilizar estas funciones importando Itertools. En este artículo, aprenderá sobre el módulo Itertools en Python y sus funciones.

El oficial Pitón La documentación explica que Itertools contiene código para construir iteradores. Este módulo proporciona funciones rápidas y eficientes para trabajar con listas y matrices.

Antes de usar este módulo, debe importarlo usando la siguiente sintaxis:

import itertools

Hay tres tipos diferentes de iteradores presentes en este módulo.

  1. iteradores infinitos

  2. iteradores combinatorios

  3. iteradores finales

iteradores infinitos

Los iteradores infinitos pueden repetirse infinitamente. Estas funciones se realizan con mayor frecuencia utilizando un a bucle. Hay tres iteradores infinitos.

1. contar (inicio, paso)

O contar() La función toma dos parámetros: el para comenzar y el Paso. El ciclo comienza desde el valor inicial y devuelve valores que se incrementan por paso, que por defecto es 1. Considere el ejemplo que se da a continuación: el ciclo comienza en 2 y agregará 2 cada vez. El bucle se rompe cuando el valor de me se convierte en 10.

for i in itertools.count(2,2):
if i == 10:
break
else:
print(i, end=" ")

Salida:

2  4  6  8  

2. repetir (número, veces para repetir)

O repetir() La función acepta dos parámetros. El primero es un valor que la función produce repetidamente. El segundo parámetro es el número de veces que el número debe repetirse. Si no especifica el segundo parámetro, el ciclo se ejecutará infinitamente.

for i in itertools.repeat(2,5):
print(i, end=" ")

Salida:

2 2 2 2 2 

3. ciclo (entrada)

O ciclo() La función itera a través de la entrada e imprime elementos individuales en un orden determinado. Cuando llegue al final de su entrada, ciclo se reinicia desde el principio.

c = 0
var = "12345"
for i in itertools.cycle(var):
if c == 12:
break
else:
c = c + 1
print(i, end=" ")

Salida:

1 2 3 4 5 1 2 3 4 5 1 2

iteradores combinatorios

Los iteradores combinatorios proporcionan funciones para realizar permutaciones, combinaciones y productos cartesianos.

1. producto (entrada)

O productos () La función calcula el producto cartesiano de la entrada especificada. Tiene un parámetro de repetición que calcula el producto cartesiano de un iterador consigo mismo. Es un parámetro opcional.

array = [1,2,3]
print(list(itertools.product(array, repeat=2)))
string = "ABC"
print(list(itertools.product(string, "XYZ")))

Salida:

Example 1 [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]
Example 2 [('A', 'X'), ('A', 'Y'), ('A', 'Z'), ('B', 'X'), ('B', 'Y'), ('B', 'Z'), ('C', 'X'), ('C', 'Y'), ('C', 'Z')]

2. permutaciones (entrada, tamaño)

Esta función devuelve una tupla de todas las permutaciones del iterable dado. Acepta dos parámetros: el iterable y el tamaño del grupo. Si no se especifica el tamaño del grupo, formará grupos de la misma longitud que el iterable en sí.

arr = [1,2,3,4]
print(list(itertools.permutations(arr, 2)))

Salida:

[(1, 2), (1, 3), (1, 4), (2, 1), (2, 3), (2, 4), (3, 1), (3, 2), (3, 4), (4, 1), (4, 2), (4, 3)]

Relacionado: Funciones de Python que debe conocer

3. combinaciones (entrada, longitud)

O combinaciones () La función ayuda a calcular las combinaciones para un iterador dado. Tenga en cuenta que esta función mantiene el orden de su elemento de entrada. Tiempo permutaciones incluye valores que difieren solo por orden, combinaciones produce valores únicos.

arr = [1,2,3,4]
print(list(itertools.combinations(arr, 3)))

Salida:

[(1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)]

iteradores finales

Los iteradores de terminación producen una salida basada en las condiciones proporcionadas para la entrada. Puede comprenderlo mejor con algunas funciones de ejemplo.

1. acumular (entrada, operador)

O acumular() La función acepta dos argumentos: el iterable y un operador. Produce salida aplicando el operador a un total acumulativo y a cada elemento de entrada a su vez. El operador es un argumento opcional. Si no pasa, esta función realizará la suma.

import operator
arr = [1,2,3,4]
print(list(itertools.accumulate(arr)))
print(list(itertools.accumulate(arr, operator.sub)))

Salida:

[1, 3, 6, 10]
[1, -1, -4, -8]

2. mapa estelar (función, entrada)

O mapa de estrellas () La función acepta una función y una lista de tuplas como argumentos. Calcula los valores de retorno aplicando la función a cada tupla en la entrada. En el ejemplo dado, esta función calculará el valor máximo de cada tupla y lo devolverá en una matriz.

arr = [(1,2,3), (4,5,6), (7,8,9)]
print(list(itertools.starmap(max, arr)))

Salida:

[3, 6, 9]

Relacionado: Cómo crear y usar tuplas en Python

3. filterfalse (función)

O filterfalse () La función devuelve valores que no cumplen la condición en la función pasada. El código que se proporciona a continuación elimina todos los valores impares.

arr = [1,2,3,4]
print(list(itertools.filterfalse(lambda x : x % 2 != 0, arr)))

Salida:

[2, 4]

Continúe su viaje de codificación Python

Ahora que ha aprendido sobre el módulo Itertools, es hora de explorar otros módulos de Python. Python tiene módulos y bibliotecas para una amplia gama de tareas. Incluyen conceptos avanzados como la transformada de Fourier y las aplicaciones AI / ML.

Algunos módulos son más complicados que otros y llevará más tiempo aprenderlos. El módulo Tkinter le permite crear aplicaciones GUI completas en Python.