Python三目运算符(三元运算符)用法详解(含实例代码)
作者:旅途中的宽~ 发布时间:2022-08-10 19:59:59
一、前言
三目运算符,又称条件运算符,是计算机语言(c,c++,java等)的重要组成部分。它是唯一有3个操作数的运算符,有时又称为三元运算符。
定义:
对于条件表达式b ? x : y
,先计算条件b,然后进行判断。如果b的值为true,计算x的值,运算结果为x的值;否则,计算y的值,运算结果为y的值。
一个条件表达式绝不会既计算x,又计算y。
条件运算符是右结合的,也就是说,从右向左分组计算。例如,a ? b : c ? d : e
将按a ? b : (c ? d : e)执行。
可以理解为条件 ? 结果1 : 结果2 里面的?号是格式要求。也可以理解为条件是否成立,条件成立为结果1,否则为结果2。
注意:在C语言中,结果1 和 结果2的类型必须一致。
a ? b : c简单理解方式为:
if(a) {
return b;
} else {
return c;
}
一个C语言中的例子解释:
int a = 2;
int c = 3;
int b = (a > c) ? a : c;
cout << "b:" << b << endl;
cout
是c++语言的输出符号。
endl
英语意思是end of line
,即一行输出结束,然后输出下一行。
cout<<endl
是使程序此行输出结束。
cout<<"b:"<<b<<endl
:类似于C中的:printf(“b:%d\n”,b)。
我们知道a>c
的结果是False
,所以b值返回c。
所以我们的输出结果为:
b:3
接下来看个复杂的:
int a = 1, b = 2, z, c = 3;
z = a > b ? a : (b > c ? b : c);
cout << "z:" << z << endl;
我们看右部分:b>c
返回值为False
,所以返回3
a>b
返回False
,所以最终输出为:z:3
至此,大家理解了三元运算符的定义。
二、Python中的三目运算符
Python语言不像Java、JavaScript等这些语言有这样的三目运算:
判段的条件?条件为真时的结果:条件为假时的结果
但是Python也有自己的三目运算符:
条件为真时的结果 if 判段的条件 else 条件为假时的结果
即:Python可以通过if
语句来实现三目运算符的功能,因此可以把这种if
语句当做三目运算符,具体语法格式如下:
返回True执行 if 表达式 else 返回False执行
我们举一个简单的例子来帮助理解:
假设现在有两个数字,我们希望获得其中较大的一个,那么可以使用 if else 语句,例如:
if a>b:
max = a
else:
max = b
但是 Python 提供了一种更加简洁的写法,如下所示:
max = a if a>b else b
这里详细解释一下:
max = a if a>b else b
的含义是:
如果 a>b 成立,就把 a 作为整个表达式的值,并赋给变量 max;
如果 a> b 不成立,就把 b 作为整个表达式的值,并赋给变量 max。
第二个例子:
a = "返回True执行" if 3 > 4 else "返回False执行"
print (a)
我们的判断条件为3>4
是不满足的,所以执行返回False执行
运行结果:返回False执行
三、在三目运算符中放置多条语句方式
在Python的三目运算符中,允许在"返回True执行"和"返回Flase执行"中放置多条语句,有以下两种方式:
1. 使用英文逗号隔开,每条放置的语句都会执行,程序返回多条语句的返回值组成的元组:
b = 3 + 1, "3 > 2",print('AAA') if 1 > 2 else print("BBB"),2 + 2
print (b)
上面的例子中,因为 1 > 2
是False
,所以执行并返回3 + 1,"3 > 2",2 + 2,print("BBB")
这四条语句,由于print()函数没有返回值,故返回None,运行结果如下:
BBB
(4, '3 > 2', None, 4)
2. 使用英文分号隔开,每条语句都会执行,但程序只会返回第一条语句的返回值:
b = 1 + 1; "3 > 2";print('AAA') if 1 > 2 else print("BBB");2 + 2
print (b)
这里的if…else…执行print(“BBB”),返回的是第一条语句1 + 1的返回值2,所以,运行结果如下:
BBB2
四、总结
这是一种类似于其它编程语言中三目运算符? :
的写法。
Python 是一种极简主义的编程语言,它没有引入? :
这个新的运算符,而是使用已有的 if else
关键字来实现相同的功能。
使用 if else
实现三目运算符(条件运算符)的格式如下:
exp1 if contion else exp2
condition
是判断条件,exp1
和 exp2
是两个表达式。
如果 condition 成立(结果为真),就执行 exp1,并把 exp1 的结果作为整个表达式的结果;
如果 condition 不成立(结果为假),就执行 exp2,并把 exp2 的结果作为整个表达式的结果。
五、三目运算符的嵌套
Python 三目运算符支持嵌套,如此可以构成更加复杂的表达式。在嵌套时需要注意 if 和 else
的配对,例如:
a if a>b else c if c>d else d
应该理解为:
a if a>b else ( c if c>d else d )
就是我们上面讲的:条件运算符是右结合的
例子:
a = int( input("Input a: ") )
b = int( input("Input b: ") )
print("a大于b") if a>b else ( print("a小于b") if a<b else print("a等于b") )
运行结果:
Input a: 5
Input b: 6
a小于b
该程序是一个嵌套的三目运算符。程序先对 a>b
求值,如果该表达式为 True,程序就返回执行第一个表达式 print(“a大于b”),否则将继续执行 else 后面的内容,也就是:( print("a小于b") if a<b else print("a等于b") )
,进入该表达式后,先判断 a<b 是否成立,如果 a<b 的结果为 True,将执行 print(“a小于b”),否则执行 print(“a等于b”)。
来源:https://blog.csdn.net/wzk4869/article/details/126550962


猜你喜欢
- 问题描述python的pandas库中有一个十分便利的isnull()函数,它可以用来判断缺失值,我们通过几个例子学习它的使用方法。首先我们
- 尽管很多 NoSQL 数据库近几年大放异彩,但是像 MySQL 这样的关系型数据库依然是互联网的主流数据库之一,每个学 Python 的都有
- 数据库性能优化普遍采用集群方式,oracle集群软硬件投入昂贵,今天花了一天时间搭建基于mysql的集群环境。主要思路简单说,实现mysql
- 效果图:搜索分类2种情况,一般的是当用户输入完,点击确定的按钮在向后发送请求,还有一种就是的我一边输入,一边向后台发送请求,但是会产生一个性
- substr 定义和用法 substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。 语法 stringObject.
- 前言Python中,.whl文件是使用wheel格式存储的一种Python安装包,同时也是一个标准的内置包格式。可以将其看作Python库的
- 继上一篇单向链表,单线链表可以进一步扩展为环,如下图所示:特点:1、第一个节点称为头部节点,最后一个节点称为尾部节点2、每个节点都单方面的指
- # -*- encoding: utf8 -*-import osimport sysimport ftplibclass FTPSync(
- 一、前言该测试功能是Linux产测软件的一个子功能,主要涉及:140行代码PySide2的Event、信号和槽、QLabel,QWidget
- HTTP短连接(非持久连接)是指,客户端和服务端进行一次HTTP请求/响应之后,就关闭连接。所以,下一次的HTTP请求/响应操作就需要重新建
- 一、什么是函数装饰器1.函数装饰器是Python提供的一种增强函数功能的标记函数;2.装饰器是可调用的函数对象,其参数是另一个函数(被装饰的
- 本文实例讲述了python基于BeautifulSoup实现抓取网页指定内容的方法。分享给大家供大家参考。具体实现方法如下:# _*_ co
- Ajax 技术改变了大型商业 Web 应用程序的外观,但是许多较小的 Web 站点都不具备足够的资源重新构建完整的用户界面(UI)。Ajax
- keras非常方便。不解释,直接上实例。数据格式如下:序号 天气 是否周末 是否有促销 销量1 坏 &n
- 在曾经的 淘宝UED 招聘 中有这样一道题目:“使用纯CSS实现未知尺寸的图片(但高宽都小于200px)在200px的正方形容器中水平和垂直
- 在win7 64位,Anaconda安装的Python3.6.1下安装的TensorFlow与Keras,Keras的backend为Ten
- 大家是否还记得1983年任天堂的著名游戏《超级玛丽》里那个留着胡子的意大利水管工人,还有日本konami公司1987年发行的射击游戏《魂斗罗
- 前言:字体反爬是什么个意思?就是网站把自己的重要数据不直接的在源代码中呈现出来,而是通过相应字体的编码,与一个字体文件(一般后缀为ttf或w
- 一、使用步骤 1.引入库(安装Python环境、PyQt、PyQt-tools)from PyQt5 import QtCore,
- 本文实例讲述了Python实现繁体中文与简体中文相互转换的方法。分享给大家供大家参考,具体如下:工作中需要将繁体中文转换成简体中文上网找了些