J'essaie de boucler de 0 à 1 en utilisant des tailles de pas de 0,01 (par exemple). Comment pourrais-je m'y prendre? La for i in range(start, stop, step)
accepte uniquement des arguments entiers, les flottants ne fonctionneront donc pas.
for i in [float(j) / 100 for j in range(0, 100, 1)]:
print i
Évitez de composer des erreurs en virgule flottante avec cette approche. Le nombre d'étapes est comme prévu, tandis que la valeur est calculée pour chaque étape.
def drange2(start, stop, step):
numelements = int((stop-start)/float(step))
for i in range(numelements+1):
yield start + i*step
Usage:
for i in drange2(0, 1, 0.01):
print i
Une option:
def drange(start, stop, step):
while start < stop:
yield start
start += step
Usage:
for i in drange(0, 1, 0.01):
print i
vous pouvez utiliser les compréhensions de liste soit:
print([i for i in [float(j) / 100 for j in range(0, 100, 1)]])
si vous voulez contrôler l'impression, faites quelque chose comme ça:
print(['something {} something'.format(i) for i in [float(j) / 100 for j in range(0, 100, 1)]])
ou
list(i for i in [float(j) / 100 for j in range(0, 100, 1)])
Eh bien, vous pouvez faire passer votre boucle de 0 à 100 avec un pas de la taille de 1 qui vous donnera le même nombre de pas. Ensuite, vous pouvez diviser i par 100 pour tout ce que vous alliez en faire.
Je dirais que la meilleure façon utilise numpy array.
Si vous voulez faire une boucle de -2 à +2 avec une augmentation de 0,25, voici comment je le ferais:
Start = -2
End = 2
Increment = 0.25
Array = np.arange(Start, End, Increment)
for i in range(0, Array.size):
print (Array[i])