将带有计数器的while循环转换为更具Python风格的代码

将带有计数器的while循环转换为更具Python风格的代码,python,while-loop,Python,While Loop,有没有办法将这段python代码转换成更具python风格的代码 i = 0 while condition: doSomething() i+=1 如果条件是关于i like“i

有没有办法将这段python代码转换成更具python风格的代码

i = 0
while condition:
    doSomething()
    i+=1

如果条件是关于i like“i<10”的值,则可以使用“for”语句:

for i in range (10):
    do_something ()

这将执行该函数10次。

对于这种类型,我使用
count

from itertools import count
c = count(0)
while condition:
    doSomething()
    next(c) # returns 0, +1 in further loops
但如果您知道需要多少循环,请尝试
for loop

for i in range(n):
    doSomething() 
其次,我个人会这样做:

for i in itertools.count():
    if not condition:
        break

    do_something()
注意:如果可能的话,通常要避免无限循环,但是,你知道更糟糕的是什么吗?手动计数器。尤其是当它们处于循环的底部时。这就是为什么我把条件检查放在最上面,就在
for
循环语句的下面

但是,如果您知道需要多少次迭代,可以使用:

for i in range(100):
   do_something()

然后用所需的迭代次数替换
100

取决于具体情况。什么是
条件
,如何使用
i
?你只是想计算一下循环执行的频率吗?这很难解释。条件是布尔值,其值取决于dosomething()将执行的操作。Dosomething()是一种根据其他并发方法和实例将执行的操作来更改其行为的方法。(这一切都是通过离散事件模拟器来管理的)这已经是一个很好的pythonic了。你所做的一切并没有什么不符合pythonic的。while循环通常在您不知道循环启动时需要运行多长时间(或者至少是最大迭代次数)时使用。如果你想继续做某件事,直到某个条件变为假,你已经以完全可以接受的方式完成了。我认为目的是
做某事()
,只要
条件
为真
,并跟踪它发生的次数。如果你需要这样做,你就不能在循环中使用计数器。@JeromeJ为什么不能在这里使用计数器?
c
作为
itertools.count
对象,我所说的计数器是
next(c)
返回的内容,所以要在循环中使用它,你需要将
I=next(c)放入
在循环开始时。这只是一个小细节。