Voici un petit itérateur pour Python 3 que je viens de faire (merci Dive Into Python 3) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env python
 
# Source : "Dive into Python 3"
 
class iterator():
    def __init__(self, text):
        self.text = text
 
    def __iter__(self):
        self.__index = 0
        self.__indexMax = len(self.text)
        return self
 
    def __next__(self, step = 1):
        currentIndex = self.__index
        self.__index += step
 
        if self.__index >= self.__indexMax:
            raise StopIteration
 
        return self.text[currentIndex]
 
 
#######
# TESTS
 
if __name__=="__main__":
    myIterator = [ iterator('abcdefgh'),
               iterator('ab') ]
 
    for oneIterator in myIterator:
        print('-'*20)
 
        for c in oneIterator:
            try:
                if c == 'b':
                oneIterator.__next__(2)
 
                print(c)
            except StopIteration:
                pass
J'ai créé cet itérateur afin de parcourir une chaîne en sautant quelque fois des caractères.

J'aurais voulu éviter l'emploi de try:... except StopIteration:.... Est-ce faisable ? Quelqu'un a-t-il une idée ?