在python中,我们如何创建没有恒定步长的for循环?我想创建一个带阶跃函数i = i * 10的for循环,该怎么做?
例如:我要为for(i=1;i<10000000;i=i*10){...}
创建一个等效的python
如何在python2和python3中做到这一点?
我知道我可以只使用while循环,但是我想知道是否有一种使用for循环的方法?
答案 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