Wie macht man Pythons enumerate
-Funktion zum Aufzählen von größeren Zahlen zu kleineren (absteigend) ordnen, dekrementieren, zählen)? Oder im Allgemeinen, wie man unterschiedliche Schrittinkremente / -dekremente in enumerate
?
Beispielsweise würde eine solche Funktion, die auf die Liste ['a', 'b', 'c']
mit dem Startwert 10
und dem Schritt -2
angewendet wird, den Iterator [(10, 'a'), (8, 'b'), (6, 'c')]
erzeugen.
Ich habe keinen eleganteren, idiomatischen und prägnanten Weg gefunden, als einen einfachen Generator zu schreiben:
%Vor%Beispiele:
%Vor%Wenn Sie den obigen Code nicht verstehen, lesen Sie Was bewirkt das Schlüsselwort "yield"? in Python? und Unterschiede zwischen Pythons Generatoren und Iteratoren .
Eine Option ist zip
iterbar zu range
:
Dies hat die Einschränkung, dass Sie wissen müssen, wie weit range
gehen soll (das Minimum, das es abdecken sollte - wie in meinem Beispiel wird der Überschuss um zip
gekürzt).
Wenn Sie nicht wissen, können Sie Ihre eigene "unendliche range
" rollen und verwenden Sie diese:
Eine weitere Option ist die Verwendung von itertools.count
, was beim "Aufzählen" durch einen Schritt in rückwärts hilfreich ist.
Eigenschaften
count()
next()
iteriert
count()
ist von Natur aus unendlich; nützlich, wenn die Terminalgrenze unbekannt ist
(siehe @jonrsharpe)