For example, in C++ I could do the following :-
for (i = 0; i < n; i++){
if(...){ //some condition
i = 0;
}
}
This will effectively reset the loop, i.e. start the loop over without introducing a second loop
For Python -
for x in a: # 'a' is a list
if someCondition == True:
# do something
Basically during the course of the loop the length of 'a' might change. So every time the length of 'a' changes, I want to start the loop over. How do I go about doing this?
解决方案
You could define your own iterator that can be rewound:
class ListIterator:
def __init__(self, ls):
self.ls = ls
self.idx = 0
def __iter__(self):
return self
def rewind(self):
self.idx = 0
def __next__(self):
try:
return self.ls[self.idx]
except IndexError:
raise StopIteration
finally:
self.idx += 1
Use it like this:
li = ListIterator([1,2,3,4,5,6])
for element in li:
... # do something
if some_condition:
li.rewind()