在内联条件python中使用else

在内联条件python中使用else,python,if-statement,inline,Python,If Statement,Inline,我知道我能做到: z = a if switch == 1 else z = b 但是如果我想要z=a如果开关=1,z=b如果开关=2,z=c如果开关=3怎么办?是否有一种python有效的方法将其作为一行编写 比如: z=a如果开关==1,则z=b如果开关==2,则z=c 谢谢,现在正在学习Python(显然)。如下: z = a if switch == 1 else (b if switch == 2 else c) 你可以继续,但你没有说如果不是3,c之后应该用什么…像这样: z =

我知道我能做到:

z = a if switch == 1 else z = b
但是如果我想要
z=a如果开关=1,z=b如果开关=2,z=c如果开关=3怎么办?是否有一种python有效的方法将其作为一行编写

比如:

z=a如果开关==1,则z=b如果开关==2,则z=c

谢谢,现在正在学习Python(显然)。

如下:

z = a if switch == 1 else (b if switch == 2 else c)
你可以继续,但你没有说如果不是3,c之后应该用什么…

像这样:

z = a if switch == 1 else (b if switch == 2 else c)

你可以继续,但你没有说如果不是3,在c之后用什么…

如果
a
b
c
。。。如果是静态的,那么您最好使用
dict

lookup = {1: a, 2: b, 3: c}
z = lookup[switch]
如果您可以只生成一次
dict
,并且每次都重用它,那么这可能是最有效的。还要注意的是,由于开关似乎是从1开始的顺序整数,所以也可以使用
列表(或
元组)


如果
a
b
c
。。。如果是静态的,那么您最好使用
dict

lookup = {1: a, 2: b, 3: c}
z = lookup[switch]
如果您可以只生成一次
dict
,并且每次都重用它,那么这可能是最有效的。还要注意的是,由于开关似乎是从1开始的顺序整数,所以也可以使用
列表(或
元组)



从技术上讲,你不需要帕伦斯,但我个人认为它更具可读性:哇,我真的认为这是不可行的-看到这一点太酷了!你会继续用更多的选项来嵌套Paren吗?z=a if-switch==1-else(b if-switch==2-else(c if-switch==3-else-d))例如?@SindyR是的,但在某个时候,你可能想重新考虑你的策略,并使用dict查找或其他方法:)我肯定,这可能根本不是Pythonic,但我很好奇,想看看可能发生了什么@夜幕降临是真的。有趣的是,
z=a if b else c if d else e
被编译器接受,即使它是不明确的(你必须知道它是按照我写的方式解释的,而不是
z=(a if b else c)如果d else e
——但是如果b if c else d else e
是一个语法错误,即使它是明确的。从技术上来说,你不需要paren,但我个人认为它更可读:哇,我真的认为这是不可行的-看到这一点太酷了!你会继续用更多选项嵌套paren吗?z例如:@SindyR是的,但在某个时候,你可能想重新考虑你的策略,并使用dict查找或其他方法:)我肯定,这可能根本不是Pythonic,但我很想看看有什么可能@夜幕降临是真的。有趣的是,
z=a if b else c if d else e
被编译器接受,即使它是不明确的(你必须知道它是按照我写的方式解释的,而不是
z=(a if b else c)如果d else e
--但是如果b else d else e
是语法错误,即使它是明确的。FWIW,
z=a if switch==1 else z=b
无效,因为赋值
z=b
是一个语句,而不是表达式。我想你的意思是
z=a if switch==1 else b
:-)这是一个容易混淆的代码,它不是Pythonic。如果您有比单个三元运算符更复杂的问题,请不要使用三元运算符。或者,在python的情况下,使用一个“条件表达式”,它与其他语言中的三元运算符等价:-)。mgilson,谢谢您,是的,真的-很抱歉对这一切如此陌生!我并不反对,这更多的是一个什么是可能的问题,而不是推荐什么FWIW,
z=a if switch==1 else z=b
无效,因为赋值
z=b
是语句,而不是表达式。我想你的意思是如果switch==1,那么z=a;如果switch==1,那么b
:-)这是混淆代码的方法,这不是Pythonic。如果您有比单个三元运算符更复杂的问题,请不要使用三元运算符。或者,在python的情况下,使用一个“条件表达式”,它与其他语言中的三元运算符等价:-)。mgilson,谢谢您,是的,真的-很抱歉对这一切如此陌生!我并不反对,这更多的是一个什么是可能的问题,而不是推荐什么谢谢,我会记住这一点——我相信在这种情况下,dict可能更像Python,但我喜欢知道Python中的函数,即使习语不推荐它谢谢,我会记住这一点——我相信在这种情况下,dict可能更像Python,但我喜欢知道Python中的函数,即使习语不推荐它