La fonction intégrée Python range()
est limitée aux entiers.Existe-t-il une implémentation de range() qui ne soit pas limitée aux entiers?
je besoin d'une fonction plus générique de signature similaire range(start, stop, step)
, où start
, stop
et step
peut être tout type étant donné que:
- résultat de (éventuellement multiple) ajout de
step
-start
est défini - à la fois
start
et le résultat mentionné ci-dessus peut être comparé avecstop
.
La fonction peut être utilisée (par exemple) pour obtenir une séquence de jours de l'année:
range(datetime.datetime(2015, 1, 1),
datetime.datetime(2016, 1, 1),
datetime.timedelta(1))
Je sais que je peux facilement écrire cette fonction par moi-même. Cependant, je cherche des solutions existantes efficaces dans un certain paquet populaire (comme numpy ou scipy), travaillant avec Python 2 et Python 3.
J'ai déjà essayé de combiner itertools.takewhile
avec itertools.count
, mais ce dernier semble être limité aux nombres.
Merci. Je connais l'astuce du générateur, mais c'est une solution de bricolage. On dirait que 'arange' fonctionne avec' datetime' et 'timedelta', et c'est quasiment ce que je cherche, mais il faut aussi définir les opérations' -' et '/', et '/' retourner un nombre. J'ai corrigé les objets 'datetime', cependant l'appel à' timedelta' est correct: https://docs.python.org/2/library/datetime.html#timedelta-objects. – abukaj
Quel est le problème avec une solution de bricolage? @abukaj –
D'accord. Pourquoi chercher une solution qui est dans une bibliothèque pré-libérée lorsque vous avez quelque chose qui fonctionne? Tout le codage est une solution de bricolage. – scotty3785