将带有计数器的while循环转换为更具Python风格的代码
有没有办法将这段python代码转换成更具python风格的代码将带有计数器的while循环转换为更具Python风格的代码,python,while-loop,Python,While Loop,有没有办法将这段python代码转换成更具python风格的代码 i = 0 while condition: doSomething() i+=1 如果条件是关于i like“i
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)放入
在循环开始时。这只是一个小细节。