【问题标题】:Cycle "for" in python like in C [duplicate]像在C中一样在python中循环“for”[重复]
【发布时间】:2012-10-17 09:52:59
【问题描述】:

可能重复:
Python decimal range() step value

我在 C 中有一个循环:

for (float i = 0; i < 2 * CONST; i += 0.01) {
    // ... do something
}

我在 python 中需要同样的循环,但是:

for x in xxx

不一样。

如何在 python 中实现?

【问题讨论】:

    标签: python


    【解决方案1】:

    编写您自己的范围生成器。这可以帮助您在整个程序中轻松处理非整数步长值,解决多个同类问题。它也更具可读性。

    def my_range(start, end, step):
        while start <= end:
            yield start
            start += step
    
    for x in my_range(1, 2 * CONST, 0.01):
        #do something
    

    For-loop reference

    【讨论】:

    • 这看起来最正确; rangexrange 都在整数上工作,并且一个自定义的类范围生成器允许解决这个问题。另见stackoverflow.com/questions/477486/…
    • 将大量浮点数加在一起会导致不准确。以下链接显示了创建浮动范围的更好方法:code.activestate.com/recipes/66472
    • 是的,这样很好,而且很容易把这个函数变成一个生成器。
    【解决方案2】:

    你快要上线了。这是您在列表中的操作方式:-

    your_list = [1, 2, 3]
    for eachItem in your_list:
        print eachItem
    

    如果你想迭代某个范围:-

    for i in xrange(10):
        print i
    

    要给出步长值,您可以使用第三个参数,因此在您的情况下,它将是:-

    for i in xrange(2 * CONST, 1):
        print i
    

    但您只能将integer 值作为步长值。

    如果你想使用float 增量,你必须稍微修改你的范围:-

    for i in xrange(200 * CONST):
        print i / 100.0
    

    【讨论】:

    • 我建议 range 支持 xrange 因为 range 实际上会创建一个数组浪费空间
    • 谢谢,你给了我一点如何做到这一点。
    • @MrSil。不客气:) 您应该获取更新代码。我在最后一个代码中错误地写了不正确的范围。现已更正。 :)
    • @Rohit Jain 已经解决了我的问题,谢谢。
    【解决方案3】:

    numpy 有一个方法可以用来创建一系列浮点数。

    from numpy import arange
    
    for x in arange(0, 2*CONST, 0.01):
        do_something(x)
    

    【讨论】:

      【解决方案4】:
      for i in xrange(200*CONST):
          i = i/100.0
      

      【讨论】:

        猜你喜欢
        • 2020-10-18
        • 1970-01-01
        • 2020-06-04
        • 1970-01-01
        • 2018-03-04
        • 1970-01-01
        • 2023-02-16
        • 2016-10-04
        • 1970-01-01
        相关资源
        最近更新 更多