Quel est l'objet en Python itertools.répéter?

Chaque utilisation je peux penser pour Python itertools.répéter() classe, je ne peux penser à un autre tout aussi (voire plus) solution acceptable pour obtenir le même effet. Par exemple:

>>> [i for i in itertools.repeat('example', 5)]
['example', 'example', 'example', 'example', 'example']
>>> ['example'] * 5
['example', 'example', 'example', 'example', 'example']

>>> list(map(str.upper, itertools.repeat('example', 5)))
['EXAMPLE', 'EXAMPLE', 'EXAMPLE', 'EXAMPLE', 'EXAMPLE']
>>> ['example'.upper()] * 5
['EXAMPLE', 'EXAMPLE', 'EXAMPLE', 'EXAMPLE', 'EXAMPLE']

Est-il de toute affaire dans laquelle il serait la solution la plus appropriée? Si oui, dans quelles circonstances?

  • J'ai ajouté un nouvel élément de réponse qui montre l'original en cas d'utilisation de motivation pour itertools répéter. Aussi, j'ai juste mis à jour le Python docs afin de refléter cette note d'utilisation.
  • 3 des 4 exemples de code ne sera pas réellement de travail. La première crée un générateur d'expression, pas un tuple (vous voulez tuple(itertools.repeat('example', 5))), le second multiplie 'example' lui-même pour faire 'exampleexampleexampleexampleexample' parce que ('example') ne pas faire un tuple en premier lieu (vous avez besoin ('example',) * 5), et votre troisième exemple utilise map, qui permettrait le retour d'un map objet, parce que Python 3 map est paresseux (vous auriez l'envelopper dans list pour obtenir le résultat fourni). C'est une question intéressante, mais truquer vos exemples de code ça fait mal.
  • J'ai été assez nouveau pour Python quand j'ai fait ce post et je viens de rapidement tapé quelques exemples sans contrôle de la production réelle. Un peu pédant, mais j'ai corrigé maintenant de toute façon. Merci! 🙂