考虑C中的以下代码:
for(int i=0; i<10 && some_condition; ++i){
do_something();
}
我想用Python写一些类似的东西。我能想到的最好的版本是:
i = 0
while some_condition and i<10:
do_something()
i+=1
坦率地说,我不喜欢模拟for
循环的while
循环。这是由于忘记增加反变量的风险。另一种选择是,应对这种风险:
for i in range(10):
if not some_condition: break
do_something()
重要说明
some_condition
不是在循环期间计算,而是指定是否首先启动循环
我指的是Python2.6
您喜欢哪种款式?有没有更好的成语可以这么说?
一般来说,首选“
range
+break
”样式-但是在Python 2.x中,使用xrange
而不是range
进行迭代(这将按需创建值,而不是实际生成数字列表)。但总要看情况。在这种情况下,数字10有什么特别之处?什么是
some_condition
?等等对更新的响应:
听起来好像
some_condition
是一个“循环不变量”,即在循环期间不会改变。在这种情况下,我们应该先测试一下:在Python中,
for
具有常量上限的循环有点少见。如果您在somearray
上迭代,则可以执行以下操作:或者,更好:
这也许没有关系,但我习惯了。。。如果
some_condition
足够简单,则将其放在函数中并迭代filter
项:也可以在遍历某些元素列表时使用此方法。
同样,这可能不是您的情况,您应该根据您的问题选择筛选项目的方法。
相关问题 更多 >
编程相关推荐