Articles of Itertools

Generando todas las combinaciones posibles en un diccionario nested

Necesito probar todas las configuraciones de instalación posibles posibles. Las configuraciones se guardan en una matriz de diccionario que a veces contiene matrices anidadas. Aquí hay una muestra de la información de configuración (la configuración real es mucho más larga): config = {‘database’: ‘sqlite’, ‘useExisting’: False, ‘userCredentials’: {‘authType’: ‘windows’, ‘user’: r’.\Testing’, ‘password’: ‘testing’ } } […]

Declaración de Python Groupby

Yo estoy tratando de agrupar la siguiente lista de detalles: details = [(‘20130325′,’B’), (‘20130320′,’A’), (‘20130325′,’B’), (‘20130320′,’A’)] >>for k,v in itertools.groupby(details,key=operator.itemgetter(0)): >> print k,list(v) Y esta es la salida con la instrucción groupby anterior: 20130325 [(‘20130325’, ‘B’)] 20130320 [(‘20130320’, ‘A’)] 20130325 [(‘20130325’, ‘B’)] 20130320 [(‘20130320’, ‘A’)] Pero mi salida esperada fue: 20130325 [(‘20130325’, ‘B’),(‘20130325’, ‘B’)] 20130320 […]

Mapa de iteradores de diferente longitud

Estaba respondiendo esta pregunta y enfrenté el siguiente problema: >>> from operator import add >>> map(add,[1,2,3],[1,2]) Traceback (most recent call last): File “”, line 1, in map(add,[1,2,3],[1,2]) TypeError: unsupported operand type(s) for +: ‘int’ and ‘NoneType’ Quería que el map detuviera tan pronto como se consumiera el iterador más pequeño proporcionado en los parámetros. He […]

Producto Python de generadores infinitos.

Estoy intentando obtener el producto de 2 generadores infinitos, pero la función del product en itertools no permite este tipo de comportamiento. Ejemplo de comportamiento: from itertools import * i = count(1) j = count(1) x = product(i, j) [Killed] Lo que quiero: x = product(i, j) ((0,0), (0,1), (1,0), (1,1) …) No importa en […]

Compruebe si dos listas anidadas son equivalentes en la sustitución

En algún contexto, estoy tratando de enumerar la cantidad de situaciones únicas que pueden ocurrir al calcular los índices de poder de Banzhaf para cuatro jugadores, cuando no hay un dictador y hay cuatro o cinco coaliciones ganadoras. Estoy usando el siguiente código para generar un conjunto de listas sobre las que quiero iterar. from […]

Extraer una lista de itertools.cycle

Tengo una clase que contiene una instancia de itertools.cycle que me gustaría poder copiar. Un enfoque (el único que se me ocurre), es extraer el iterable inicial (que era una lista) y almacenar la posición en la que se encuentra el ciclo. Desafortunadamente, no puedo obtener la lista que usé para crear la instancia del […]

Python: descubre si una lista de enteros es coherente

Estoy tratando de averiguar si una lista de enteros es coherente o ‘en un tramo’, lo que significa que la diferencia entre dos elementos vecinos debe ser exactamente uno y que los números deben boost monótonamente. Encontré un enfoque ordenado donde podemos agrupar por el número en la lista menos la posición del elemento en […]

Python creando una lista con itertools.product?

Estoy creando una lista con itertools de una lista de rangos, hasta ahora tengo esto: start_list = [xrange(0,201,1),xrange(0,201,2),xrange(0,201,5),xrange(0,201,10),xrange(0,201,20),xrange(0,201,50),xrange(0,201,100),xrange(0,201,200)] Ahora, sé que si intentara ejecutar la siguiente línea, matará a mi intérprete de python: next_list = list(itertools.product(*start_list)) Lo que me pregunto es si sería posible presentar un argumento que verifique cada tupla, para obtener una sum […]

todas las permutaciones de + -r, + -s

Dados dos números r y s , me gustaría obtener una lista de todas las permutaciones de n +-r y m +-s . Por ejemplo (con r=3.14 y s=2.71 ), n = 1 m = 1 out = [ (+r, +s), (+r, -s), (-r, +s), (-r, -s), (+s, +r), (+s, -r), (-s, +r), (-s, -r) […]

python todas las combinaciones posibles de 0,1 de longitud k

Necesito todas las combinaciones posibles de 0,1 de longitud k. Supongamos que k = 2 quiero (0,0), (0,1), (1,0), (1,1) He probado diferentes funciones en itertools pero no encontré lo que quiero. >>> list(itertools.combinations_with_replacement([0,1], 2)) [(0, 0), (0, 1), (1, 1)] >>> list(itertools.product([0,1], [0,1])) #does not work if k>2 [(0, 0), (0, 1), (1, 0), […]