Python fonction range
Dire que je veux boucle de 0 à 100, mais avec une étape de 1/2. Si vous essayez
for i in range(0, 100, 0.5):
whatever
Erreur:
l'étape ne doit pas être 0
Question:
Est-il un moyen intégré à Python 2.x pour faire quelque chose comme cela?
- Regarder quelques-unes des réponses ce serait un excellent inverse code de golf de question ...
Vous devez vous connecter pour publier un commentaire.
Python2.x:
sorties:
Numpy:
numpy.arange
serait aussi faire l'affaire.TypeError: range() integer end argument expected, got float.
int
(voir la modifier). Puisque la réponse a été écrit plus de deux ans, je ne me souviens pas pourquoi j'ai écrit la façon dont il est.Si vous avez
numpy
, voici deux façons de le faire:Vous devez utiliser entier étapes pour
range
() etxrange()
. C'est pourquoi votre 0.5 étape est convertie à 0 et vous obtenez cette erreur. Essayezfor i in [j /2.0 for j in xrange(100 * 2)]:
Vous aurez à créer la boucle manuellement, ou définir votre propre gamme de fonction. Le haut-nécessite un entier étape de la valeur.
map
et une fonction lambda pour un simple objet iterable? L'air cool et fonctionnelle de programmation-y, mais, en réalité, il s'agirait juste d'ajouter de l'inutile complexité de calcul.Pour les grandes portées, il est préférable d'utiliser un générateur d'expression que la construction d'une liste explicite:
Ce qui consomme pas beaucoup de mémoire supplémentaire, est rapide et facile à lire.
Voir http://docs.python.org/tutorial/classes.html#generator-expressions