Articles of generador

Cómo dividir un objeto generador o iterador en Python

Me gustaría hacer un bucle sobre un “segmento” de un iterador. No estoy seguro de si esto es posible porque entiendo que no es posible cortar un iterador. Lo que me gustaría hacer es esto: def f(): for i in range(100): yield(i) x = f() for i in x[95:]: print(i) Esto por supuesto falla con: […]

es este generador primos pythonico

¿Es el siguiente código para generar primos pythonic? def get_primes(n): primes=[False,False]+[True]*(n-1) next_p=(i for i,j in enumerate(primes) if j) while True: p=next(next_p) yield p primes[p*p::p]=[False]*((np*p)//p+1) Tenga en cuenta que next (next_p) finalmente generará un error StopIteration que de alguna manera termina la función get_primes. ¿Es tan malo? También tenga en cuenta que next_p es un generador […]

Python: Función para aplanar el generador que contiene otro generador.

Me gustaría saber cómo escribir la función python que puede aplanar el generador que produce otros generadores o iteables (que también puede producir otros generadores / iterables … posiblemente infinitamente). Aquí está el ejemplo: gen(gen(1,2,3), gen(4,5,6), [7,8,9], [gen(10,11,12), gen(13,14,15)]) nota: gen – significa objeto generador, el contenido entre paréntesis después de gen es información que […]

¿Cómo crear un generador asíncrono en Python?

Estoy tratando de reescribir este código Python2.7 al nuevo orden mundial asíncrono: def get_api_results(func, iterable): pool = multiprocessing.Pool(5) for res in pool.map(func, iterable): yield res map() bloquea hasta que se hayan calculado todos los resultados, por lo que estoy tratando de volver a escribir esto como una implementación asíncrona que dará resultados tan pronto como […]

Producto cartesiano de un diccionario de listas.

Estoy tratando de escribir algo de código para probar el producto cartesiano de un conjunto de parámetros de entrada. He mirado itertools , pero su función de product no es exactamente lo que quiero. ¿Existe una manera simple y obvia de tomar un diccionario con un número arbitrario de claves y un número arbitrario de […]

Python 3: método de envío de generadores.

No puedo entender el método de send . Entiendo que se utiliza para operar el generador. Pero la syntax está aquí: generator.send(value) . De alguna manera no puedo entender por qué el valor debería convertirse en el resultado de la expresión de yield actual. Preparé un ejemplo: def gen(): for i in range(10): X = […]

¿Cómo crear un generador / iterador con la API de Python C?

¿Cómo puedo replicar el siguiente código de Python con la API de Python C? class Sequence(): def __init__(self, max): self.max = max def data(self): i = 0 while i < self.max: yield i i += 1 Hasta ahora, tengo esto: #include #include /* Define a new object class, Sequence. */ typedef struct { PyObject_HEAD size_t […]

¿Cómo puedo hacer que los generadores / iteradores evalúen como Falso cuando están agotados?

Otros objetos vacíos en Python se evalúan como Falso. ¿Cómo puedo hacer que los iteradores / generadores también lo hagan?

¿Cuál es la forma más corta de contar el número de elementos en un generador / iterador?

Si quiero la cantidad de elementos en un iterable sin preocuparme por los elementos en sí, ¿cuál sería la forma pythonica de obtener eso? En este momento, yo definiría def ilen(it): return sum(itertools.imap(lambda _: 1, it)) # or just map in Python 3 pero entiendo que lambda está cerca de ser considerada dañina, y lambda […]

generador html de python

Estoy buscando un generador html de python de fácil implementación. Encontré este http://www.decalage.info/python/html pero no hay manera de agregar elementos css (id, clase) para la tabla. Gracias