Bor*_*lik 10 python coding-style idioms idiomatic
考虑C中的以下代码:
for(int i=0; i<10 && some_condition; ++i){
do_something();
}
Run Code Online (Sandbox Code Playgroud)
我想在Python中编写类似的东西.我能想到的最好的版本是:
i = 0
while some_condition and i<10:
do_something()
i+=1
Run Code Online (Sandbox Code Playgroud)
坦率地说,我不喜欢while模仿for循环的循环.这是由于忘记增加计数器变量的风险.另一个选择是增加这种风险:
for i in range(10):
if not some_condition: break
do_something()
Run Code Online (Sandbox Code Playgroud)
重要的澄清
some_condition 并不意味着在循环期间计算,而是指定是否首先启动循环
我指的是Python2.6
哪种款式首选?有没有更好的成语呢?
这可能没有关系,但是我已经习惯了...如果some_condition足够简单,可以将它放在函数和filter迭代的项目中:
def some_condition(element):
return True#False
for i in filter(some_condition, xrange(10)):
pass
Run Code Online (Sandbox Code Playgroud)
迭代某些元素列表时,也可以使用此方法.
selected = filter(some_condition, to_process)
for i, item in enumerate(selected):
pass
Run Code Online (Sandbox Code Playgroud)
同样,这可能不是您的情况,您应该根据您的问题选择过滤项目的方法.
通常,首选" range+ break"样式 - 但在Python 2.x中,使用xrange而不是range迭代(这会按需创建值而不是实际创建数字列表).
但它总是取决于.在这种情况下,10号的特殊之处是什么?到底是some_condition什么?等等.
对更新的回应:
听起来好像some_condition是"循环不变",即在循环期间不会改变.在这种情况下,我们应该先测试它:
if some_condition:
for i in xrange(10):
do_something()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32674 次 |
| 最近记录: |