都知道 python 没有 switch-case 语句,通常要实现类似功能的时候,通过 dict 实现
那么,如果遇到下列情况,用 python 该怎么实现比较好呢?
switch (var){
case 1,5,9,19: # 取值为多个无规律的数字
break;
case 3,21,50:
break;
case default:
break;
}
1
mzotw2babm 2020-06-13 13:45:21 +08:00
用个列表?
if i in [1, 5, 9, 19]: break else if i in [3, 21, 50]: break else break |
2
mzotw2babm 2020-06-13 13:46:29 +08:00
else if --> elif
好久不写,写错了- - |
3
elmagnificogg 2020-06-13 14:10:24 +08:00 via Android
集合 in 操作啊
|
4
gzfrankie 2020-06-13 14:17:50 +08:00 via iPhone
用 if ( x==1) && (x==2
Else if (x==3) else if 的格式。 python 编译器对这个其实是有优化的,会优化成 switch 对应的汇编。详见 pep3103 和 pep275 |
5
0bit 2020-06-13 15:35:50 +08:00
``` python
if var in {1, 5, 9, 19}: pass elif var in {3, 21, 50}: pass else: pass ``` 注意一点,in 后面是 set,会更快。 |
6
0bit 2020-06-13 15:36:36 +08:00
@mzotw2babm 不应该写 break,没有循环
|
7
mzotw2babm 2020-06-13 20:38:42 +08:00
@0bit 嗯嗯在下错了,好久没写了,也没仔细考虑,直接套了楼主的格式
|
9
viiii OP @mzotw2babm 用 in + list 是个好办法, 之前老是往 dict 上面想,钻牛角尖了
|