如何在Python中节省空间地写if-elif-else语句?

4 投票
2 回答
1465 浏览
提问于 2025-04-15 22:33

我在代码里有很多的if-elif-else语句。


if message == '0' or message == '3' or message == '5' or message == '7':
   ...
elif message == '1' or message == '2' or message == '4' or message == '6' or message == '8':
   ...
else:
   ...

有没有办法让这些语句看起来更简洁一些呢?

我试着这样做过:


if message == '0' or '3' or '5' or '7':
   ...
elif message == '1' or '2' or '4' or '6' or '8':
   ...
else:
   ...

但是没有成功。

2 个回答

1
if message in '0357' :
    ...
elif message in '12468' :
    ...
else:
    ...
if value in [elem0, elem1, ... ]:
    ...

从更广泛的角度来看:

6
if message in ("0", "3", "5", "7"):
    ...
elif message in ...

这是一种方法。

如果 message 总是只有一个字符长,你也可以使用

if message in "0357":
    ....

但如果 message == "35" 也成立,那就会出现警告。


(编辑)

简单解释一下为什么你的方法不奏效:

if message == '0' or '3' or '5' or '7':

被解释为

if (message == '0') or '3' or '5' or '7':

因此 总是 成功,因为 '3' 的值是 True

撰写回答