itertools: Explorando el Módulo «itertools» en Python
El módulo itertools de Python proporciona una colección de funciones que crean objetos iterables. Estos objetos pueden utilizarse para realizar operaciones de iteración complejas de forma eficiente.
Funciones básicas
Las funciones básicas de itertools proporcionan maneras de crear iterables a partir de secuencias, conjuntos o números.
- chain() une dos o más iterables en un solo iterable.
Python
>>> from itertools import chain
>>>
>>> list(chain([1, 2, 3], [4, 5, 6]))
[1, 2, 3, 4, 5, 6]
- cycle() crea un iterable que itera infinitamente sobre una secuencia.
Python
>>> from itertools import cycle
>>>
>>> list(cycle([1, 2, 3]))
[1, 2, 3, 1, 2, 3]
- repeat() crea un iterable que itera infinitamente sobre un valor.
Python
>>> from itertools import repeat
>>>
>>> list(repeat(1, 3))
[1, 1, 1]
- takewhile() crea un iterable que itera sobre una secuencia hasta que una condición se cumple.
Python
>>> from itertools import takewhile
>>>
>>> list(takewhile(lambda x: x < 5, [1, 2, 3, 4, 5]))
[1, 2, 3, 4]
- dropwhile() crea un iterable que itera sobre una secuencia omitiendo los elementos iniciales que cumplen una condición.
Python
>>> from itertools import dropwhile
>>>
>>> list(dropwhile(lambda x: x < 5, [1, 2, 3, 4, 5]))
[5]
Funciones avanzadas
Las funciones avanzadas de itertools proporcionan maneras de crear iterables más complejos.
- combinations() crea un iterable que contiene todas las combinaciones de tamaño
rde una secuencia.
Python
>>> from itertools import combinations
>>>
>>> list(combinations([1, 2, 3], 2))
[(1, 2), (1, 3), (2, 3)]
- permutations() crea un iterable que contiene todas las permutaciones de tamaño
rde una secuencia.
Python
>>> from itertools import permutations
>>>
>>> list(permutations([1, 2, 3], 2))
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]
- product() crea un iterable que contiene el producto cartesiano de dos o más secuencias.
Python
>>> from itertools import product
>>>
>>> list(product([1, 2], [3, 4]))
[(1, 3), (1, 4), (2, 3), (2, 4)]
- accumulate() crea un iterable que acumula los valores de una secuencia.
Python
>>> from itertools import accumulate
>>>
>>> list(accumulate([1, 2, 3]))
[1, 3, 6]
- groupby() agrupa los elementos de una secuencia según un criterio.
Python
>>> from itertools import groupby
>>>
>>> for key, group in groupby([1, 2, 2, 3, 3, 4]):
... print(key, list(group))
...
1 [1, 2, 2]
3 [3, 3]
4 [4]
Conclusión
El módulo itertools proporciona una colección de funciones que pueden ser muy útiles para realizar operaciones de iteración complejas de forma eficiente.


