如何让python中的if-elif-else语句更节省空间?

时间:2010-05-10 13:57:53

标签: python optimization

我的代码中有很多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 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

if message in '0357' :
    ...
elif message in '12468' :
    ...
else:
    ...

以更全球化的方式:

if value in [elem0, elem1, ... ]:
    ...