Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Python 4 2 Itertools
Python 4 2 Itertools
Itertools
Módulo itertools
El módulo itertools de Python es una colección de
herramientas para el manejo de iterators. En pocas
palabras, los iterators son tipos de datos que se pueden
utilizar en un bucle for.
El iterador más común en Python es una list.
Podemos usar un bucle for para iterar, o recorrer esta lista.
El módulo itertools tiene funciones que permiten la
creación de iterators de manera eficiente.
Posee iterators infinitos, combinatorios y los que terminan
en secuencias cortas.
Módulo itertools
Iterators infinitos:
count([start=0, step=1]): esta función crea un iterador que
devuelve valores espaciados uniformemente comenzando con
el inicio del número:
Ejemplo:
import itertools as it
for i in it.count(10, 2):
print(i)
if i > 25: break
Módulo itertools
Iterators infinitos:
cycle(iterable): esta función crea un iterador con los elementos
de un iterable, salvando una copia de cada uno. Cuando el
iterable concluye retorna los elementos de esa copia se repite
indefinidamente.
Ejemplo:
import itertools as it
n = 0
for i in it.cycle([‘rojo’, ‘verde’, ‘azul’]):
print(i)
n += 1
if n > 9: break
Módulo itertools
Iterators infinitos:
repeat(elem[,n]): esta función repite el elemento n veces o
infinitamente en el iterador.
Ejemplo:
import itertools as it
for i in it.repeat(‘rojo’,3):
print(i)
Módulo itertools
Iterators combinatorios: la combinatoria pertenece a
arreglos, operaciones y selección de elementos de las
matemáticas discretas.
product(*iterables, repeat=1): esta función retorna el producto
cartesiano de los iterables de entrada.
Ejemplo:
import itertools as it
for i in it.product([1, 2, 3], [4, 5, 6]):
print(i)
Módulo itertools
Iterators combinatorios:
permutations(iterable, r=None): esta función retorna las
permutaciones de longitud r de los elementos del iterable.
Genera todas las posibles permutaciones en orden lexicográfico
(alfabético)
Ejemplo:
import itertools as it
for i in it.permutations(‘ABCD’):
print(i)
Módulo itertools
Iterators combinatorios:
combinations(iterable, r): esta función retorna las
subsecuencias de longitud r de los elementos del iterable.
Ejemplo:
import itertools as it
for i in it.combinations(‘ABCD’, 2):
print(i)
Módulo itertools
Iterators combinatorios:
combinations_with_replacement(iterable, r): esta función
retorna las subsecuencias de longitud r de los elementos del
iterable, pero que se pueden repetir.
Ejemplo:
from itertools import combinations_with_repplacement as cwr
for i in cwr(‘ABCD’, 2):
print(i)
Módulo itertools
Iterators que terminan en la secuencia de entrada más
corta
accumulate(iterable, [, func]): esta función retorna la
acumulación de la función pasada como argumento, si esta se
omite se asume la suma.
Ejemplo:
import itertools as it
for i in it.accumulate([0, 1, 0, 1, 1, 2, 3, 5]):
print(i)
Módulo itertools
Iterators que terminan en la secuencia de entrada más
corta
chain(*iterables): esta función crea un iterator encadenando
los elementos de cada uno de los iterables
Ejemplo:
import itertools as it
for i in it.chain(‘Hola’, ‘Mundo’, ‘Adios’):
print(i)
Módulo itertools
Iterators que terminan en la secuencia de entrada más
corta
chain.from_iterable(iterable): esta función alterna crea el
mismo resultado de chain, pero lo evalua de forma lazy
Ejemplo:
import itertools as it
for i in it.chain.from_iterable(‘Hola’, ‘Mundo’, ‘Adios’):
print(i)
Módulo itertools
Iterators que terminan en la secuencia de entrada más
corta
compress(data, selectors): esta función crea un iterator que
filtra elementos de data retornando sólo aquellos que tienen un
elemento correspondiente en selectors evaluados a True
Ejemplo:
import itertools as it
for i in it.compress(‘ABCDEF’,[1, 0, 1, True, 0, ‘ ’]):
print(i)
Módulo itertools
Iterators que terminan en la secuencia de entrada más corta
dropwhile(predicate, iterable): mientras el predicado sea True,
elimina elementos del iterable. Cuando se hace falso, comienza a
retornar los elementos del iterable
Ejemplo:
import itertools as it
for i in it.dropwhile(lambda x: x<7,[1, 2, 7, 9, 5, 3, 2, 9]):
print(i)
Módulo itertools
Iterators que terminan en la secuencia de entrada más corta
filterfalse(predicate, iterable): esta función crea un iterator que filtra
aquellos elementos del iterable, para los cuales el predicado es True
Ejemplo:
import itertools as it
for i in it.filterfalse(lambda x: x<7,[1, 2, 7, 9, 5, 3, 2, 9]):
print(i)
Módulo itertools
Iterators que terminan en la secuencia de entrada más corta
groupby(iterable, key=None): esta función crea un iterator que
toma el iterable y retorna claves y grupos consecutivos. Es decir, son
sub-iterables agrupados por la clave
Ejemplo:
import itertools as it
for i in it.groupby(‘AAAAABBCCCCCDDDCCCBBA’):
print(i)
Módulo itertools
Iterators que terminan en la secuencia de entrada más corta
islice(iterable, start, stop [, step]): esta función crea un iterator el
cual retorna los elementos seleccionados del iterable
Ejemplo:
import itertools as it
for i in it.islide([1, 2, 3, 4, 5], 2):
print(i)
Módulo itertools
Iterators que terminan en la secuencia de entrada más corta
starmap(function, iterable): esta función crea un iterator que toma
argumentos del iterable y calcula la función
Ejemplo:
import itertools as it
for i in it.starmap(operator.sub,[(2, 1), (7, 3), (15, 10)]):
print(i)
Módulo itertools
Iterators que terminan en la secuencia de entrada más corta
takewhile(predicate, iterable): esta función crea un iterator que
retorna elementos del iterable mientras el predicado sea True. Es lo
contrario a dropwhile
Ejemplo:
import itertools as it
for i in it.takewhile(lambda x: x<7,[1, 2, 7, 9, 5, 3, 2, 9]):
print(i)
Módulo itertools
Iterators que terminan en la secuencia de entrada más corta
tee(iterable, n): esta función crea n iterators independientes desde el
iterable
Ejemplo:
import itertools as it
for i in it.tee([1, 2, 3, 4, 5, 6, 7], 3):
for j in i:
print(j)
print()
Módulo itertools
Iterators que terminan en la secuencia de entrada más corta
zip_longest(*iterable, fillvalue=None): esta función crea un iterator
agregando elementos de cada iterable. El parámetro fillvalue le
indica el valor a rellenar en caso de hacer falta.
Ejemplo:
import itertools as it
for i in it.zip_longest(‘ABC’, ‘12345’, fillvalue=‘*’):
print(i)
Módulo itertools
Ver ejemplos de aplicación