在内联条件 python 中使用 else

using else in inline conditional python

我知道我能做到:

z = a if switch == 1 else z = b

但是如果我想要 z=a if switch=1, z=b if switch=2, and z=c if switch=3 怎么办?有没有 python 有效的方法将其写成一行?

类似于:

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

谢谢,刚刚学习 Python 现在(很明显)。

像这样:

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 并且每次都重用它,这可能是最有效的。另请注意,由于 switch 似乎是从 1 开始的连续整数,您还可以使用 list(或 tuple):

lookup = (a, b, c)
z = lookup[switch - 1]