Articles of iterador de

Itinerarios de Python: ¿cómo asignar dinámicamente self.next dentro de una nueva clase de estilo?

Como parte de algún middleware WSGI, quiero escribir una clase de python que envuelva un iterador para implementar un método de cierre en el iterador. Esto funciona bien cuando lo bash con una clase de estilo antiguo, pero lanza un TypeError cuando lo bash con una clase de estilo nuevo. ¿Qué debo hacer para que […]

¿Cómo funciona __iter__?

A pesar de leerlo, todavía no entiendo bien cómo funciona __iter__ . ¿Cuál sería una explicación simple? He visto def__iter__(self): return self . No veo cómo funciona esto o los pasos sobre cómo funciona esto.

¿Cómo saber la diferencia entre un iterador y un iterable?

En Python, la interfaz de un iterable es un subconjunto de la interfaz del iterador . Esto tiene la ventaja de que en muchos casos se pueden tratar de la misma manera. Sin embargo, existe una importante diferencia semántica entre los dos, ya que para un __iter__ iterable se devuelve un nuevo objeto iterador y […]

Función de iterador (iter ()) en Python.

Para el diccionario, puedo usar iter() para iterar sobre las teclas del diccionario. y = {“x”:10, “y”:20} for val in iter(y): print val Cuando tengo el iterador de la siguiente manera, class Counter: def __init__(self, low, high): self.current = low self.high = high def __iter__(self): return self def next(self): if self.current > self.high: raise StopIteration […]

¿Cómo la función incorporada iter () de python convierte una lista de python a un iterador?

He leído mis materiales, que indican que un iterador de Python debe tener los __iter__ y __next__ , pero un iterable solo necesita __iter__ . Reviso una lista y encuentro que no tiene un método __next__ . Cuando se usa iter() en él, se convertirá en un iterador. ¿Esto significa que iter() agregará un método […]

Anidar un iterador de gestores de contexto de Python en “con”

Tengo un iterador que devuelve gestores de contexto. Quiero un pythonic with statement, que emule el comportamiento de varias declaraciones anidadas, una para cada administrador de contexto devuelto por el iterador. Se podría decir que quiero una generalización de la función contextlib.nested (en desuso).

¿Cuáles son los métodos de la clase de iteración siguiente () y __siguiente __ () para, y cuál es la diferencia?

Estoy un poco perdido en los iteradores de python. De vez en cuando los uso, pero no recuerdo haber creado uno. Leí desde algún lugar que no recuerdo dónde, un código como este: class Foo(object): def __init__(self): self.something = “initial_value” def __iter__(self): return self def next(self): # I don’t quite remember what was here :S […]

¿Cuáles son las ventajas de “artículo de rendimiento” en comparación con el iter de retorno (artículos)?

En los ejemplos a continuación, resp.results es un iterador. Versión 1 : items = [] for result in resp.results: item = process(result) items.append(item) return iter(items) Versión 2: for result in resp.results: yield process(result) ¿El retorno de iter (elementos) en la Versión 1 es mejor / peor en términos de rendimiento / ahorro de memoria que […]

En Python, ¿puedo generar perezosamente copias de un iterador usando tee?

Estoy intentando crear un iterador que crea perezosamente (potencialmente infinitas) copias de un iterador. es posible? Sé que puedo crear cualquier número finito fijo de copias simplemente haciendo iter_copies = tee(my_iter, n=10) pero esto se rompe si no sabe n antes de tiempo o si n es infinito. Por lo general, intentaría algo a lo […]

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 […]