Was ist der Zweck in Python-itertools.wiederholen Sie?

Jedem Gebrauch ich denken kann, für Python itertools.wiederholen() Klasse, ich kann mir denken, anderen ebenso (vielleicht mehr) akzeptable Lösung zu erzielen den gleichen Effekt. Zum Beispiel:

>>> [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']

Gibt es irgendeinen Fall, in dem es die am besten geeignete Lösung? Wenn ja, unter welchen Umständen?

  • Ich habe eine neue Antwort, die zeigt, dass die ursprüngliche Motivation Anwendungsfall für itertools wiederholen. Auch ich habe soeben die Python docs zu reflektieren, Nutzungs-Hinweis.
  • 3 4 code-Beispiele, die nicht wirklich funktionieren. Der erste erzeugt ein generator-Ausdruck, nicht eine tuple (Sie möchten tuple(itertools.repeat('example', 5))), die zweite multipliziert 'example' selbst zu machen 'exampleexampleexampleexampleexample' weil ('example') nicht tuple in den ersten Platz (Sie müssen ('example',) * 5), und Ihre Dritte Beispiel verwendet map, was wieder eine map Objekt, da Python 3 map faul ist (man müsste wickeln Sie es in list zu Holen Sie sich die bereitgestellten Ergebnis). Es ist eine interessante Frage, aber faken Ihren code-samples weh tut es.
  • Ich war ziemlich neu bei Python, wenn ich diesen Beitrag und ich habe einfach schnell getippt, einige Beispiele ohne Prüfung der tatsächlichen Ausgabe. Ein wenig kleinlich, aber ich habe es jetzt behoben, trotzdem. Danke! 🙂
Schreibe einen Kommentar