Có cách nào để tạo một trình lặp danh sách python để quay ngược lại không?Tạo một trình lặp python đi ngược?
Về cơ bản tôi có điều này
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()
Chạy mã này kết quả trong đầu ra:
a
1
2
3
Crap i skipped C
tôi biết tại sao nó mang lại cho tôi kết quả, tuy nhiên có một cách tôi có thể bước lùi trong str() phương pháp, bởi một bước?
EDIT
Được rồi có lẽ để làm điều này rõ ràng hơn. Tôi không muốn làm một đảo ngược hoàn toàn, về cơ bản những gì tôi muốn biết nếu có một cách dễ dàng để làm tương đương với một hai chiều iterator trong python?
Có gì sai khi chỉ sử dụng 'đảo ngược'? Bạn rõ ràng muốn có thể quay trở lại, hoặc chỉ muốn kết quả ngược? – jathanism
Ồ .... bạn có muốn dừng giữa lặp lại và sao lưu không? Có thể bạn sẽ phải cache một phần của danh sách mà bạn đã duyệt qua và đi qua nó bằng cách sử dụng 'reversed()' –
Tôi có thể làm điều đó, tuy nhiên kết thúc dẫn đến mã icky, trong C++ chúng ta có hỗ trợ lặp hai chiều. – UberJumper