当前位置: 首页 > news >正文

Python——三目运算语句

本文基于python3。

目录

  • 1、三目运算语句的定义
  • 2、三目运算语句:包含逻辑运算符 (and、or、not)
    • 1、 包含 and
    • 2、包含 or
    • 3、包含 not
    • 4、包含 and、or、not
  • 3、三目运算语句:使用多个if ... else ...形式
  • 4、三目运算语句:在列表(list)中使用

1、三目运算语句的定义

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

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

直接看实例:

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

再简写就是这样:

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

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

a = 1if 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')     # AAAa = -1
print('AAA') if a < 0 and a % 2 == 0 else print('BBB')     # BBB

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

a = -1if 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)    # AAAa = -1
result = 'AAA' if a > 0 or a % 2 == 0 else 'BBB'
print(result)    # BBB

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

a = -1if 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)    # AAAa = 2
result = 'AAA' if not(a > 0) or a % 3 == 0 else 'BBB'
print(result)    # BBB

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

a = -1if 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)    # AAAa = 2
result = 'AAA' if not(a > 0) and a % 2 == 0 or a == -1 else 'BBB'
print(result)    # BBB

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

a = -1if 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)
# positivea = 0
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# zeroa = -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了谁的,也请指出。
会及时更正。

http://www.lryc.cn/news/136935.html

相关文章:

  • C 实现Window/DOS 键盘监听事件
  • 在vue中使用 axios 访问 API
  • java八股文面试[java基础]——浅拷贝和深拷贝
  • 【DC-DC的原理图及Layout设计要点】
  • TCP可靠性机制
  • solidity0.8.0的应用案例13:数字签名及应用:NFT白名单
  • 视频集中存储/直播点播平台EasyDSS内核无法启动是什么原因?
  • 【网络】DNS | ICMP | NAT | 代理服务器
  • 详细手机代理IP配置
  • 【C++】—— 简述C++11新特性
  • 协议的分层结构
  • Linux下彻底卸载jenkins
  • Nebula基础的查询操作介绍
  • C++ STL序列式容器(详解)
  • C++获取map最小值算法,STL---std::min_element()!
  • 如何在Java实现TCP方式发送和接收Socket消息(多线程模式)
  • SYBASE查询全量字段及对应的表名方法
  • Alions 8.6 下 Redis 7.2.0 集群搭建和配置
  • Android Retrofit 使用及原理详解~
  • 三种主要的云交付服务和安全模型
  • python爬虫实战(3)--爬取某乎热搜
  • IPv4,IPv6,TCP,路由
  • Java 计算文本相似度
  • MySQL 视图
  • 深入理解回调函数qsort:从入门到模拟实现
  • 【Git基础】获取远程仓库
  • chatGPT界面
  • windows一键启动jupyter
  • 树形结构的快速生成
  • Android笔记(二十七):自定义Dialog实现居中Toast