我想知道是否有任何捷径做到以下几点:Python - 如何检查是否满足几个条件之一,然后特别是如果满足每个条件?
if a or b or c ...
do p
if a
do x
if b
do y
if c
do z
...
else
do q
是否有必要打出来的每个条件的两倍或有任何其他方式做到这一点?
我想知道是否有任何捷径做到以下几点:Python - 如何检查是否满足几个条件之一,然后特别是如果满足每个条件?
if a or b or c ...
do p
if a
do x
if b
do y
if c
do z
...
else
do q
是否有必要打出来的每个条件的两倍或有任何其他方式做到这一点?
有没有错,你的代码,但如果检查任何的a
,b
或c
是昂贵的,你可以使用一个标志,而不是作为检查的条件只有一次:
flag = False
if a:
flag = True
do x
if b:
flag = True
do y
if c:
flag = True
do z
do (p if flag else q)
我觉得这形式也更易读,因为它只有缩进一个水平上,但我想这只是喜好的问题...
编辑:如果p
必须执行之前x
,y
,z
,那么你可以存储条件的结果检查来代替:
doers = [x, y, z]
conditions = [check(el) for el in (a, b, c)]
do (p if any(conditions) else q)
tmp = [doers[i] for i, condition in enumerate(conditions) if condition]
(与tmp
线将是一个真正的for
循环更Python,但我明白,你正在优化性能,列表理解更快......)
真实的行为和条件是什么?也许还有另外一种方式,就是针对这个问题...... – 2011-12-27 07:07:21