Python的三元运算符几种替代方案

在Python语言中,是不支持三元计算符的,比如Java中用这种形式,来判断身份证的男女

1
String gender = Integer.parseInt(idcard.substring(16, 17)) % 2 != 0"男""女";

而在Python中没有这个运算符,有一个if else可以替代

1
gender = "男" if int(idcard[16:17]) % 2 != 0 else "女"

或者这样:

1
gender =  int(idcard[16:17]) % 2 != 0 and "男" or "女"

更或者这样:

1
2
# 利用int(True)=1和int(False)=0, 可以实现下面的选择
gender = ("女" , "男")[int(idcard[16:17]) % 2 != 0]

还可以这样

1
2
# 利用True和False当作字典的key, 可以实现下面的选择
gender = {True:"男",False:"女"}[int(idcard[16:17]) % 2 != 0]

如果判断的东西是否定和非否定关系,甚至还可以这样.

1
2
3
# 同样是利用利用int(True)=1和int(False)=0, 然后切片数组
age=18
adult_flag = "未成年"[age>18:]
Notice: 正常情况下,这里会有一个基于utteranc.es的留言系统,如果看不到,可能需要科学上网方式。