起初,这个问题可能看起来很愚蠢。但出于某种原因,我无法弄清楚我的生活。我有一些功能,我们称之为foo
。 foo
将返回False
或唯一的字符串/数字,具体取决于传递给它的参数。我想检查foo
是否返回除False
之外的某个值,如果是,则处理它。如果它没有,我想继续使用传递给foo
的不同参数做同样的事情。它可以按如下方式完成:
a = foo(1)
b = foo(2)
c = foo(3)
if a:
print (a)
elif b:
print (b + 3)
elif c:
print ("abc" + c)
虽然这种方法有效但看起来很笨拙"对我来说。有没有更好的方法呢?
答案 0 :(得分:1)
abc = [foo(i) for i in range(1,4)]
for x in abc:
if x:
print(x)
break
甚至
for x in [foo(i) for i in range(1,4)]:
if x:
print(x)
break
这比你的方法主观更好,但我个人更喜欢减少行数和单个集合而不是不同的变量名。原因是它们的可扩展性。
关于你的伪开关声明;没有没有更好的方法,虽然有些人可能更喜欢使用dict
作为LUT。例如:
for i, x in enumerate(abc):
if x:
print([
x,
x+3,
"abc"+x
][i])
break