¿Hay alguna forma de hacer que un iterador de la lista python retroceda?Hacer que un iterador de python vaya hacia atrás?
Básicamente tengo este
class IterTest(object):
def __init__(self, data):
self.data = data
self.__iter = None
def all(self):
self.__iter = iter(self.data)
for each in self.__iter:
mtd = getattr(self, type(each).__name__)
mtd(each)
def str(self, item):
print item
next = self.__iter.next()
while isinstance(next, int):
print next
next = self.__iter.next()
def int(self, item):
print "Crap i skipped C"
if __name__ == '__main__':
test = IterTest(['a', 1, 2,3,'c', 17])
test.all()
Al ejecutar este código da como resultado la salida:
a
1
2
3
Crap i skipped C
sé por qué me da la salida, sin embargo, es que hay una manera que puede paso atrás en la Método str(), por un paso?
EDITAR
Está bien, quizá para hacer esto más claro. No quiero hacer un revés completo, básicamente lo que quiero saber si hay una manera fácil de hacer el equivalente de un iterador bidireccional en python?
¿Qué pasa con solo usar 'reversed'? ¿Desea explícitamente retroceder, o simplemente querer retroceder los resultados? – jathanism
Oh .... ¿quieres detener la iteración intermedia y la copia de seguridad? Probablemente tengas que guardar en la memoria caché la parte de la lista que recorriste y recorrerla usando 'reverseed()' –
. Puedo hacer eso, sin embargo, eso termina en un código molesto, en C++ tenemos soporte de iteración bidireccional. – UberJumper