Python——三目运算语句

本文基于python3。

1、三目运算语句的定义

先看一下三目运算语句的定义。

当条件为真时计算的表达式   if   条件   else    当条件为假时计算的表达式

直接看实例:

a = 1
result = 'AAA' if a % 2 == 0 else 'BBB'
print(result)    # BBB

a = 2
result = 'AAA' if a % 2 == 0 else 'BBB'
print(result)    # AAA

再简写就是这样:

a = 1
print('AAA') if a % 2 == 0 else print('BBB')     # BBB

a = 2
print('AAA') if a % 2 == 0 else print('BBB')     # AAA

三目运算符其实就等价于if语句。
因此上面的语句等价于下面这个if 语句:

a = 1

if a % 2 == 0:
    print('AAA')
else:
    print('BBB')

在if条件语句中条件里可以存在 and、or、not。
那么同样的,三目运算语句中条件也可以存在 and、or、not。

2、三目运算语句:包含逻辑运算符 (and、or、not)

直接看实例:

1、 包含 and

a = -2
print('AAA') if a < 0 and a % 2 == 0 else print('BBB')     # AAA

a = -1
print('AAA') if a < 0 and a % 2 == 0 else print('BBB')     # BBB

就等价于下面这个if 语句:

a = -1

if a < 0 and a % 2 == 0:
    print('AAA')
else:
    print('BBB')

2、包含 or

a = 1
result = 'AAA' if a > 0 or a % 2 == 0 else 'BBB'
print(result)    # AAA

a = -1
result = 'AAA' if a > 0 or a % 2 == 0 else 'BBB'
print(result)    # BBB

就等价于下面这个if 语句:

a = -1

if a > 0 or a % 2 == 0:
    print('AAA')
else:
    print('BBB')

3、包含 not

a = -1
result = 'AAA' if not(a > 0) or a % 2 == 0 else 'BBB'
print(result)    # AAA

a = 2
result = 'AAA' if not(a > 0) or a % 3 == 0 else 'BBB'
print(result)    # BBB

就等价于下面这个if 语句:

a = -1

if not(a > 0) or a % 2 == 0:
    print('AAA')
else:
    print('BBB')

4、包含 and、or、not

a = -2
result = 'AAA' if not(a > 0) and a % 2 == 0 or a == -1 else 'BBB'
print(result)    # AAA

a = 2
result = 'AAA' if not(a > 0) and a % 2 == 0 or a == -1 else 'BBB'
print(result)    # BBB

就等价于下面这个if 语句:

a = -1

if not(a > 0) and a % 2 == 0 or a == -1:
    print('AAA')
else:
    print('BBB')

3、三目运算语句:使用多个if … else …形式

使用多个if … else …形式的语句也可以用三目运算语句写出来。

a = 2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# positive

a = 0
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# zero

a = -2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# negative

就等价于下面这个if 语句:

if a < 0:
    print('negative')
else:
    if a > 0:
        print('positive')
    else:
        print('zero')

可以看到,可读性很差。请不要大量使用。
不过如果能配合小括号得话,应该会好很多。不过还是不推荐。

a = -2
result = 'negative' if a < 0 else ('positive' if a > 0 else 'zero')
print(result)
# negative

4、三目运算语句:在列表(list)中使用

三目运算语句是可以在列表中使用的。
直接看实例:

TestList = [i * 10 if i % 2 == 0 else i for i in range(10)]
print(TestList)
# [0, 1, 20, 3, 40, 5, 60, 7, 80, 9]

看起来有点儿复杂,我们先换成正常的语句,你一看就懂。

TestList = []
for i in range(10):
    if i % 2 == 0:
        TestList.append(i * 10)
    else:
        TestList.append(i)
print(TestList)
# [0, 1, 20, 3, 40, 5, 60, 7, 80, 9]

用这种方法用于处理列表的奇偶位置的数据不同的时候,会方便。
具体的原理其实利用的是Python中的:列表推导式(generator expression)
详情请参考:列表推导式

以上就是三目运算语句的用法。

如果有问题,请指出,或者copy了谁的,也请指出。
会及时更正。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值