【问题标题】:Python for loop with small steps [duplicate]带有小步骤的Python for循环[重复]
【发布时间】:2013-04-19 16:11:27
【问题描述】:

如何在 python 中创建一个步长为 0.01 的 for 循环?

我试过了,但它不起作用:

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

它说 TypeError: range() integer end argument expected, got float.

【问题讨论】:

标签: python loops for-loop


【解决方案1】:

如果您不想使用库:

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

【讨论】:

    【解决方案2】:

    python range 只接受整数,如错误消息所示。如果你想使用浮点步骤,你可以使用 numpy 的 arange 或者只划分一个整数范围:

    >>> 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]
    

    【讨论】:

      【解决方案3】:
      [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]
      

      【讨论】:

      • 如何用双循环做到这一点?
      • for X0 in range ([X0 * 0.01 for x in xrange(-2,2)]):
      • 只需将“range(...)”替换为上述列表(或其他迭代器)即可。
      • +1 但我建议使用范围,而不是 xrange。 Python 3.x 中的 range 是 Python 2.x 中的 xrange。
      • @ndpu 正如你所说,py2中的xrange()和py3中的range()是一样的,所以他用的是py3的range()...你推荐他用他已经在用的.
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-30
      • 2017-11-26
      • 2013-01-25
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多