Articles of generador

La forma pythonica de generar parejas.

Quiero algo como el código a continuación, pero el estilo “pythonic” o el uso de la biblioteca estándar: def combinations(a,b): for i in a: for j in b: yield(i,j)

Diferencia entre `rendimiento de foo ()` y `para x en foo (): rendimiento x`

En Python la mayoría de los ejemplos de rendimiento lo explican diciendo que yield from foo() es parecido a for x in foo(): yield x Por otro lado, no parece ser exactamente lo mismo y se ha introducido algo de magia. Me siento un poco incómodo al usar una función que hace magia que no […]

¿Qué hace la syntax de “rendimiento desde” en asyncio y en qué se diferencia de “esperar”?

Desde la perspectiva de alguien que ha escrito un código asyncio, pero está buscando entender mejor el funcionamiento interno, qué es lo que se yield from , lo que está await y cómo son útiles para permitir el código asíncrono. Hay una pregunta altamente valorada que pregunta sobre los usos del yield from syntax y […]

¿Cómo mapear o anidar los generadores de funciones de Python 2.7?

Si tengo un generador de funciones muy simple (aunque posiblemente muy complejo) en Python 2.7, así: def accumulator(): x = yield 0 while True: x += yield x Que se puede utilizar, como tal: >>> a = accumulator() >>> a.send(None) 0 >>> a.send(1) 1 >>> a.send(2) 3 >>> a.send(3) 6 ¿Cuál sería una envoltura simple […]

Python: ¿Por qué este código se considera un generador?

Tengo una lista llamada ‘mb’, su formato es: [‘Company Name’, ‘Rep’, Mth 1 Calls, Mth 1 Inv Totals, Mth 1 Inv Vol, Mth 2 …Y así En el siguiente código simplemente agrego una nueva lista de 38 0’s. Esto esta bien. Sin embargo, en la siguiente línea aparece un error: el objeto ‘generador‘ no admite […]

¿Por qué takewhile () omite la primera línea?

Tengo un archivo como este: 1 2 3 TAB 1 2 3 TAB Quiero leer las líneas entre TAB como bloques. import itertools def block_generator(file): with open(file) as lines: for line in lines: block = list(itertools.takewhile(lambda x: x.rstrip(‘\n’) != ‘\t’, lines)) yield block Quiero usarlo como tal: blocks = block_generator(myfile) for block in blocks: do_something(block) […]

¿En qué se diferencia irange () de range () o xrange ()?

Pasaba por Python Generators Wiki cuando me topé con esta página de RangeGenerator que habla sobre irange() – Esto nos permitirá iterador en grandes tramos de números sin tener que recurrir a xrange, que es una lista perezosa en lugar de un generador. Parece que no puedo entender el conjunto de pruebas y la implementación […]

Generadores estilo python en Go

Actualmente estoy trabajando en el Tour of Go , y pensé que los goroutines se han usado de manera similar a los generadores de Python, particularmente con la Pregunta 66 . Pensé que el 66 parecía complejo, así que lo reescribí a esto: package main import “fmt” func fibonacci(c chan int) { x, y := […]

Python devoluciones de llamada asíncronas y generadores

Estoy tratando de convertir una biblioteca síncrona para usar un marco de E / S asíncrono interno. Tengo varios métodos que se parecen a esto: def foo: …. sync_call_1() # synchronous blocking call …. sync_call_2() # synchronous blocking call …. return bar Para cada una de las funciones síncronas ( sync_call_* ), he escrito una […]

Posible error en el módulo pdb en Python 3 al usar generadores de listas

Después de ejecutar este código en Python 3: import pdb def foo(): nums = [1, 2, 3] a = 5 pdb.set_trace() foo() Las siguientes expresiones funcionan: (Pdb) print(nums) [1, 2, 3] (Pdb) print(a) 5 (Pdb) [x for x in nums] [1, 2, 3] pero la siguiente expresión falla: (Pdb) [x*a for x in nums] *** […]