Itertools es un módulo que consiste en los métodos para aplicar varias operaciones basadas en iteraciones, incluidas combinaciones, permutaciones, etc., en los componentes iterables en Python. Tiene un conjunto de herramientas ligeras, eficientes en memoria y rápidas para realizar álgebra de iteración .
Nota: Para obtener más información, consulte Python Itertools
itertools.producto()
Se utiliza para realizar productos cartesianos dentro de una lista o entre listas. Los bucles anidados ciclan de manera que el elemento más a la derecha avanza en cada iteración. Este patrón crea un ordenamiento lexicográfico y, por lo tanto, si los iterables de entrada están ordenados, las tuplas de productos también están ordenadas.
Toma iterables como parámetro. El siguiente ejemplo muestra una representación muy simple del itertools.product()
método. Aquí se utiliza como creación de un producto cartesiano.
Ejemplo:
import itertools def product(str1, str2): # returning the list containing # cartesian product return [x for x in itertools.product(list(str1), list(str2))] print(product("GfG", "GFG"))
Producción:
[(‘G’, ‘G’), (‘G’, ‘F’), (‘G’, ‘G’), (‘f’, ‘G’), (‘f’, ‘F’) , (‘f’, ‘G’), (‘G’, ‘G’), (‘G’, ‘F’), (‘G’, ‘G’)]
Operando en lista de listas
Para usar itertools.product()
el método en la lista de listas, realice primero la operación de desempaquetado. Se puede hacer de dos formas:
- Al descomprimir la lista dentro de la función
El siguiente ejemplo muestra cómo se puede realizar el desempaquetado mediante una operación simple dentro del método.
import
itertools
def
product(list_of_str):
str1
=
list_of_str[
0
]
str2
=
list_of_str[
1
]
# returning the list
# containing cartesian product
return
[x
for
x
in
itertools.product(
list
(str1),
list
(str2))]
print
(product([
"GfG"
,
"GFG"
]))
Producción
[(‘G’, ‘G’), (‘G’, ‘F’), (‘G’, ‘G’), (‘f’, ‘G’), (‘f’, ‘F’) , (‘f’, ‘G’), (‘G’, ‘G’), (‘G’, ‘F’), (‘G’, ‘G’)]
La desventaja de esta forma es que requiere información adicional para ser conocida, es decir, la longitud de la lista dentro de las listas.
- Usando el operador ‘*’
Para superar la desventaja mencionada anteriormente, se utiliza ‘*’ para desempaquetar las listas dentro de la lista. Entonces, el código anterior se puede optimizar de la siguiente manera:
import
itertools
def
product(lst):
# Unpack operation performed
# by '*' operator and returning
# the list containing cartesian
# product
return
[x
for
x
in
itertools.product(
*
lst)]
# list of lists being passed in the method
print
(product([
"GfG"
,
"GFG"
]))
Producción
[(‘G’, ‘G’), (‘G’, ‘F’), (‘G’, ‘G’), (‘f’, ‘G’), (‘f’, ‘F’) , (‘f’, ‘G’), (‘G’, ‘G’), (‘G’, ‘F’), (‘G’, ‘G’)]
Publicación traducida automáticamente
Artículo escrito por piyush25pv y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA