Générateurs
Les générateur permettent de créer plus simplement que les interrateurs des objets itérabes.
Même exemple pour mélanger les lettres d'un mot que celui de l'itérateur
from random import randint
def letter_random(word):
letters = list(word)
for l in range(len(word)):
rand_letter = randint(0, len(letters) -1 )
yield letters.pop(rand_letter)
word = 'Bonjour'
word_shuffle = ''.join([l for l in letter_random(word)])
print(word_shuffle)
Itérateurs
Un itérateur est objet dans lequel on peut parcourir les elements un à un à l'aide de la fonction next, et consumer l'object.
Exemple d'un itérateur pour mélanger les lettres d'un mot
from random import randint
class letter_random():
def __init__(self,word):
self.i = 0
self.max = len(word)
self.rest = list(word)
def __iter__(self) :
return self
def __next__(self) :
if self.i < self.max:
letter = self.rest.pop(randint(0, len(self.rest) - 1 ))
self.i += 1
return letter
else:
raise StopIteration()
word = 'Bonjour'
letter_random = letter_random(word)
word_shuffle = ''.join([l for l in letter_random])
print(word_shuffle.capitalize())