• Python三目运算符(三元运算符)用法详解(含Python代码)


    一、前言

    三目运算符,又称条件运算符,是计算机语言(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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    一个C语言中的例子解释:

    int a = 2;
     
    int c = 3;
     
    int b = (a > c) ? a : c;
     
    cout << "b:" << b << endl;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    cout是c++语言的输出符号。

    endl英语意思是end of line,即一行输出结束,然后输出下一行。

    cout<是使程序此行输出结束。

    cout<<"b:"<:类似于C中的:printf(“b:%d\n”,b)。

    我们知道a>c的结果是False,所以b值返回c。

    所以我们的输出结果为:

    b:3
    
    • 1

    接下来看个复杂的:

    int a = 1, b = 2, z, c = 3;
    z = a > b ? a : (b > c ? b : c);
    cout << "z:" << z << endl;
    
    • 1
    • 2
    • 3

    我们看右部分: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
    
    • 1
    • 2
    • 3
    • 4

    但是 Python 提供了一种更加简洁的写法,如下所示:

    max = a if a>b else b
    
    • 1

    这里详细解释一下:

    max = a if a>b else b 的含义是:

    如果 a>b 成立,就把 a 作为整个表达式的值,并赋给变量 max;

    如果 a> b 不成立,就把 b 作为整个表达式的值,并赋给变量 max。

    第二个例子:

    a = "返回True执行" if 3 > 4 else "返回False执行"
    print (a) 
    
    • 1
    • 2

    我们的判断条件为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

    上面的例子中,因为 1 > 2False,所以执行并返回3 + 1,"3 > 2",2 + 2,print("BBB")这四条语句,由于print()函数没有返回值,故返回None,运行结果如下:

    BBB
    (4, '3 > 2', None, 4)
    
    • 1
    • 2

    2. 使用英文分号隔开,每条语句都会执行,但程序只会返回第一条语句的返回值:

    b = 1 + 1; "3 > 2";print('AAA') if 1 > 2 else print("BBB");2 + 2
    print (b)
    
    • 1
    • 2

    这里的if…else…执行print(“BBB”),返回的是第一条语句1 + 1的返回值2,所以,运行结果如下:

    BBB
    2
    
    • 1
    • 2

    四、总结

    这是一种类似于其它编程语言中三目运算符? :的写法。

    Python 是一种极简主义的编程语言,它没有引入? :这个新的运算符,而是使用已有的 if else 关键字来实现相同的功能。

    使用 if else 实现三目运算符(条件运算符)的格式如下:

    exp1 if contion else exp2
    
    • 1

    condition 是判断条件,exp1exp2 是两个表达式。

    如果 condition 成立(结果为真),就执行 exp1,并把 exp1 的结果作为整个表达式的结果;

    如果 condition 不成立(结果为假),就执行 exp2,并把 exp2 的结果作为整个表达式的结果。

    五、三目运算符的嵌套

    Python 三目运算符支持嵌套,如此可以构成更加复杂的表达式。在嵌套时需要注意 if 和 else 的配对,例如:

    a if a>b else c if c>d else d
    
    • 1

    应该理解为:

    a if a>b else ( c if c>d else d )
    
    • 1

    就是我们上面讲的:条件运算符是右结合的

    例子:

    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") )
    
    • 1
    • 2
    • 3

    运行结果:

    Input a: 5
    Input b: 6
    a小于b
    
    • 1
    • 2
    • 3

    该程序是一个嵌套的三目运算符。程序先对 a>b 求值,如果该表达式为 True,程序就返回执行第一个表达式 print(“a大于b”),否则将继续执行 else 后面的内容,也就是:( print("a小于b") if a,进入该表达式后,先判断 a

  • 相关阅读:
    【C++ Efficiency】找到可能产生“临时对象”的地方
    WordPress媒体文件夹v5.1.2插件WP Media folde
    MyBatis 的执行流程,值得一看
    ZigBee案例笔记 -- RFID卡片读写(模拟饭卡)
    Linux内核中的锁
    Electron录制应用-打包静态文件问题【命令行ffmpeg导不出视频】
    es6新增方法
    sql 基础语法
    开发工具篇第九讲:菜鸟入坑指南
    离散数学 --- 特殊关系 --- 等价关系与集合的划分
  • 原文地址:https://blog.csdn.net/wzk4869/article/details/126550962