什么是for(i = 1; i <10000000; i = 1 * 10)的Python等价物?

时间:2019-05-27 05:06:58

标签: python python-3.x for-loop

在python中,我们如何创建没有恒定步长的for循环?我想创建一个带阶跃函数i = i * 10的for循环,该怎么做?

例如:我要为for(i=1;i<10000000;i=i*10){...}创建一个等效的python 如何在python2和python3中做到这一点?

我知道我可以只使用while循环,但是我想知道是否有一种使用for循环的方法?

3 个答案:

答案 0 :(得分:1)

这是一个变体:

from math import log

for i in (10 ** e for e in range(round(log(10000000, 10)))):
    print(i)

答案 1 :(得分:0)

通常,C for循环是一种语法糖,其中

for (init; cond; step)
  body

等同于

init;
while (cond) {
  body;
  step;
}

又可以轻松地翻译成Python:

i = 1
while i < 10000000:
    do_stuff(i)
    i *= 10

另一方面,Python的for循环使用了一个迭代器。我想不出可以使用的现成迭代器,但是如果创建具有所需属性的迭代器,则可以这样做。

def geometric_range(start, end, step):
    i = start
    while i < end:
        yield i
        i *= step

for i in geometric_range(1, 10000000, 10):
    do_stuff(i)

答案 2 :(得分:0)

一种选择是使用while循环:

i = 1
while i < 10000000:
    print(i)
    # the rest of your logic
    i = i*10