Coding style python中带条件的循环
考虑C中的以下代码:Coding style python中带条件的循环,coding-style,python,idioms,Coding Style,Python,Idioms,考虑C中的以下代码: for(int i=0; i<10 && some_condition; ++i){ do_something(); } 重要澄清 some_condition不是在循环期间计算的,而是指定是否首先启动循环 我指的是蟒蛇2.6 你喜欢哪种款式?有更好的习惯用法吗?一般来说,“范围+中断”样式是首选的-但是在Python2.x中,使用范围而不是范围进行迭代(这会根据需要创建值,而不是实际创建数字列表) 但这要视情况而定。在这种情况下,数字10有
for(int i=0; i<10 && some_condition; ++i){
do_something();
}
重要澄清
some_condition
不是在循环期间计算的,而是指定是否首先启动循环范围
+中断
”样式是首选的-但是在Python2.x中,使用范围
而不是范围
进行迭代(这会根据需要创建值,而不是实际创建数字列表)
但这要视情况而定。在这种情况下,数字10有什么特别之处?什么是某个条件?等等
对最新情况的答复:
听起来好像某些条件
是一个“循环不变量”,即在循环过程中不会改变。在这种情况下,我们应该首先测试它:
if some_condition:
for i in xrange(10):
do_something()
for
具有常量上限的循环在Python中有点少见。如果您正在迭代somearray
,您可能会执行以下操作:
for i in xrange(len(somearray)):
if not some_condition:
break
do_sth_with(i, somearray[i])
或者更好:
for i, item in enumerate(somearray):
if not some_condition:
break
do_sth_with(i, item)
这可能没有关系,但我习惯于这样做。。。如果
some_条件
足够简单,则将其放入函数中,并过滤您迭代的项目:
def some_condition(element):
return True#False
for i in filter(some_condition, xrange(10)):
pass
在迭代某些元素列表时,也可以使用这种方法
selected = filter(some_condition, to_process)
for i, item in enumerate(selected):
pass
同样,这可能不是您的情况,您应该根据您的问题选择过滤项的方法。我认为这是个人偏好的问题。Python的哪个版本?我认为Python应该有一个类似于do times:
,,卡尔:for.in range(10)
似乎是表示这一点的常用方法,但如果您碰巧使用了gettext,这当然是一个可怕的想法。10和range只是示例,这可能是我在数组中的i的。正如问题中所阐明的,some_condition
控制程序是否需要执行循环或跳过循环。您的版本非常简单且有效。我只是想省去额外的缩进。谢谢你,或者,让它更简短,可读性更低:for i in filter(lambda x:True,range(10)):do_something()
def some_condition(element):
return True#False
for i in filter(some_condition, xrange(10)):
pass
selected = filter(some_condition, to_process)
for i, item in enumerate(selected):
pass