Articles of iterador de

Manera elegante de saltar elementos en un iterable.

Tengo una iterable grande, de hecho, una iterable grande dada por: itertools.permutations(range(10)) Me gustaría acceder al elemento millonésimo. Ya tengo problemas resueltos de diferentes maneras. Casting iterable a la lista y obteniendo 1000000o elemento: return list(permutations(range(10)))[999999] Saltando manualmente elementos hasta 999999: p = permutations(range(10)) for i in xrange(999999): p.next() return p.next() Omisión manual de elementos […]

seleccione un solo elemento de una colección: Python

Creé una función de utilidad para devolver el único elemento esperado de una expresión generadora print one(name for name in (‘bob’,’fred’) if name==’bob’) ¿Es esta una buena manera de hacerlo? def one(g): try: val = g.next() try: g.next() except StopIteration: return val else: raise Exception(‘Too many values’) except StopIteration: raise Exception(‘No values’)

Mejores formas de obtener el elemento nth de un iterable insuscriptable

A veces, un iterable puede no ser suscriptable. Di el regreso de itertools.permutations : ps = permutations(range(10), 10) print ps[1000] Python se quejará de que ‘itertools.permutations’ object is not subscriptable Por supuesto, uno puede realizar next() por n veces para obtener el elemento nth. Solo me pregunto si hay mejores maneras de hacerlo?

¿Cuál es la mejor manera de omitir los valores N de la variable de iteración en Python?

En muchos idiomas podemos hacer algo como: for (int i = 0; i < value; i++) { if (condition) { i += 10; } } ¿Cómo puedo hacer lo mismo en Python? Lo siguiente (por supuesto) no funciona: for i in xrange(value): if condition: i += 10 Yo podría hacer algo como esto: i = […]

No sé __iter__ en python, quién me puede dar un buen ejemplo de código

mi código funciona mal class a(object): def __iter(self): return 33 b={‘a’:’aaa’,’b’:’bbb’} c=a() print b.itervalues() print c.itervalues() Por favor, trate de usar el código, en lugar del texto, porque mi inglés no es muy bueno, gracias

¿Cómo leer solo cada segunda línea de archivo?

Necesito leer solo cada segunda línea de un archivo (que es muy grande), así que no quiero usar readlines() . No estoy seguro de cómo implementar el iterador, así que cualquier sugerencia es bienvenida. Una posibilidad es llamar al siguiente () dos veces. No es muy atractivo. with open(pth_file, ‘rw’) as pth: pth.next() for i,row […]

¿Por qué un iterador de Python necesita un método iter que simplemente se devuelva a sí mismo?

Entiendo que la norma dice que sí, pero estoy tratando de encontrar la razón subyacente para esto. Si simplemente siempre vuelve a self ¿cuál es la necesidad de ello? Claramente, siempre tiene acceso al objeto ya que está invocando iter en ese objeto, así que, ¿cuál es la necesidad de tenerlo?

La expresión del generador nunca genera StopIteration

Inspirado por mi propia respuesta , ni siquiera entendía cómo funcionaba yo, considere lo siguiente: def has22(nums): it = iter(nums) return any(x == 2 == next(it) for x in it) >>> has22([2, 1, 2]) False Esperaba que se levantara una StopIteration , ya que al llegar a 2 , a next(it) estaría next(it) avanzaría un […]

¿Cómo escribir un paginador para los iteradores de Python?

Estoy buscando una forma de “recorrer” un iterador de Python. Es decir, me gustaría envolver un iterador iterador y un tamaño de página con otro iterador que devolvería los elementos de iter como una serie de “páginas”. Cada página en sí misma sería un iterador con hasta iteraciones de tamaño de página . Miré a […]

¿Rendimiento de iteradores ordenados en orden ordenado en Python?

¿Hay una mejor manera de combinar / agrupar un grupo de iteradores ordenados en uno para que produzca los elementos ordenados? Creo que el código a continuación funciona, pero siento que hay una forma más limpia y concisa de hacerlo que me estoy perdiendo. def sortIters(*iterables, **kwargs): key = kwargs.get(‘key’, lambda x : x) nextElems […]