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
r
de 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
r
de 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.