2013-04-25 51 views
3

如何使用0.01的步長在python中創建for循環?用於循環的小步驟的Python

我試過,但它不工作:

for X0 in range (-0.02, 0.02, 0.01): 
    for Y0 in range (-0.06, 0.09, 0.01): 

它說 類型錯誤:範圍()整數年底預計的說法,得到了浮動。

+0

看到這個曲子estion如果你想編寫一個'範圍'函數接受浮動或如果你想使用numpy:http://stackoverflow.com/questions/477486/python-decimal-range-step-value – Nicolas 2013-04-25 16:44:24

+2

這個問題已被問及之前回答。 http://stackoverflow.com/questions/477486/python-decimal-range-step-value – AlexLordThorsen 2013-04-25 16:46:21

回答

8
[x * 0.01 for x in xrange(10)] 

會產生

[0.0, 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.07, 0.08, 0.09] 
+0

我該如何做雙循環? – Steven 2013-04-25 16:44:07

+0

對於範圍內的X0([X0 * 0.01對於xrange(-2,2)中的x)]): – Steven 2013-04-25 16:46:25

+0

只需用上面的列表(或其他迭代器)替換「range(...)」即可。 – tiago 2013-04-25 16:46:40

5

蛇皮range僅作爲錯誤消息指示需要的整數。如果你想使用float步驟,您可以使用numpy的的人氣指數,或只是把一個整數的範圍:

>>> import numpy as np 
>>> print np.arange(-0.02, 0.02, 0.01) 
array([-0.02, -0.01, 0. , 0.01]) 
在你的榜樣

for X0 in np.arange(-0.02, 0.02, 0.01): 
    for Y0 in np.arange(-0.06, 0.09, 0.01): 

或:

>>> print [a/0.01 - 0.02 for a in range(4)] 
[-0.02, -0.01, 0.0, 0.009999999999999998] 
5

如果您不想使用庫:

def float_range(a,b,c): 
    while a < b: 
     yield a 
     a += c 
for X0 in float_range (-0.02, 0.02, 0.01): 
    for Y0 in float_range (-0.06, 0.09, 0.01): 
     print X0, Y0