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

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

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

而在 Python 中没有这个运算符,下面几种写法可以替代。

条件表达式(推荐)

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

and/or 短路写法

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的留言系统,如果看不到,可能要想想办法才能看到。

Powered by Hexo and Hexo-theme-hiker

Copyright © 2012 - 2026 tiaobug.com All Rights Reserved.

鲁ICP备2024124237号-1