Voici un petit itérateur pour Python 3 que je viens de faire (merci Dive Into Python 3) :
J'ai créé cet itérateur afin de parcourir une chaîne en sautant quelque fois des caractères.
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'aurais voulu éviter l'emploi de try:... except StopIteration:.... Est-ce faisable ? Quelqu'un a-t-il une idée ?
Partager