Python中类似于C语言的“for”循环

6

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

我有一个C语言的循环:

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

我需要在Python中实现相同的循环,但是:

for x in xxx

不一样。

我如何在Python中实现它?

4个回答

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

5

您几乎就到了终点。以下是如何在列表中完成此操作的方法:-

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

但是您只能使用整数作为步长值。

如果您想使用浮点数增量,则需要稍微修改范围:

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

我建议使用xrange而不是range,因为range会实际创建一个数组,从而浪费空间。 - ajon
谢谢,你给了我一个实现的思路。 - MrSil
@MrSil。不用谢 :) 你应该采用更新的代码。我在上一个代码中错误地写了错误的范围。现在已经更正了。 :) - Rohit Jain
@Rohit Jain已经解决了我的问题,谢谢。 - MrSil

4

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

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循环参考


1
这看起来是最正确的; rangexrange都适用于整数,而自定义的类似范围的生成器可以解决这个问题。另请参阅https://dev59.com/oHRB5IYBdhLWcg3w4bKv - Kos
1
将大量浮点数相加会导致不准确性。以下链接展示了创建浮点数范围的更好方法:http://code.activestate.com/recipes/66472/ - Dunes
是的,那种方式很好,而且将该函数转换为生成器也很容易。 - Kos

3

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

from numpy import arange

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接