Está en la página 1de 22

Programando con Python

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

También podría gustarte