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

Python 三目运算实战详解

Python 的三目运算符(也称为条件表达式)是一种简洁的方式来执行基于条件的赋值或返回值。它的语法类似于其他编程语言中的三元运算符,但有一些细微的不同。在 Python 中,三目运算符的语法如下:

value_if_true if condition else value_if_false
  • condition:一个布尔表达式,用于判断条件是否为真。
  • value_if_true:如果 condition 为真,则返回或赋值给这个值。
  • value_if_false:如果 condition 为假,则返回或赋值给这个值。

详解

  1. 基本用法: 三目运算符的基本用法是根据条件选择两个值中的一个。

    x = 10
    y = 20# 使用三目运算符
    max_value = x if x > y else y
    print(max_value)  # 输出 20
  2. 多重条件: 虽然 Python 的三目运算符不直接支持多重条件,但可以通过嵌套的方式实现类似的效果。

    x = 10
    y = 20
    z = 30# 嵌套三目运算符
    max_value = x if x > y and x > z else (y if y > z else z)
    print(max_value)  # 输出 30
  3. 使用在函数中: 三目运算符可以用于函数返回值。

    def get_max(x, y):return x if x > y else yprint(get_max(10, 20))  # 输出 20
  4. 复杂表达式: 三目运算符可以包含复杂的表达式。

    a = 5
    b = 10result = (a + b) * 2 if a > 0 else (a - b) * 2
    print(result)  # 输出 30
  5. 与逻辑运算符结合: 三目运算符可以与逻辑运算符结合使用,以处理更复杂的条件。

    age = 25
    message = "Adult" if age >= 18 else ("Teenager" if age >= 13 else "Child")
    print(message)  # 输出 Adult
  6. 简写形式: 在某些情况下,可以使用简写形式来简化代码。

    is_even = lambda x: "Even" if x % 2 == 0 else "Odd"
    print(is_even(4))  # 输出 Even
    print(is_even(7))  # 输出 Odd

实际案例

下面是一些实际案例,展示了三目运算符在不同场景下的应用:

案例 1:简单的条件赋值

假设你有一个电商系统,需要根据用户的会员等级来决定折扣率。

def get_discount_rate(member_level):return 0.1 if member_level == 'Gold' else 0.05 if member_level == 'Silver' else 0.0# 测试
print(get_discount_rate('Gold'))    # 输出 0.1
print(get_discount_rate('Silver'))  # 输出 0.05
print(get_discount_rate('Bronze'))  # 输出 0.0
案例 2:处理用户输入

假设你需要根据用户输入的年龄来决定是否允许其访问某个网站。

def check_age(age):return "Access granted" if age >= 18 else "Access denied"# 测试
print(check_age(20))  # 输出 Access granted
print(check_age(16))  # 输出 Access denied
案例 3:计算奖金

假设你有一个员工管理系统,需要根据员工的绩效评分来计算奖金。

def calculate_bonus(performance_score):return 1000 if performance_score >= 90 else 500 if performance_score >= 70 else 0# 测试
print(calculate_bonus(95))  # 输出 1000
print(calculate_bonus(75))  # 输出 500
print(calculate_bonus(60))  # 输出 0
案例 4:处理文件路径

假设你需要根据文件是否存在来决定是否创建新文件。

import osdef handle_file(file_path):return "File exists" if os.path.exists(file_path) else "Creating new file"# 测试
print(handle_file("example.txt"))  # 根据文件是否存在输出相应信息
案例 5:处理用户输入的数据类型

假设你需要根据用户输入的数据类型来决定如何处理数据。

def process_data(data):return data.upper() if isinstance(data, str) else data * 2 if isinstance(data, int) else "Unsupported type"# 测试
print(process_data("hello"))  # 输出 HELLO
print(process_data(10))       # 输出 20
print(process_data([1, 2, 3]))  # 输出 Unsupported type

通过这些实际案例,你可以看到三目运算符在 Python 中的多种用途和灵活性。合理使用它可以让你的代码更加简洁和易读。不过,在复杂的情况下,为了保持代码的可读性,建议使用 if-else 语句。

相关文章:

Python 三目运算实战详解

Python 的三目运算符(也称为条件表达式)是一种简洁的方式来执行基于条件的赋值或返回值。它的语法类似于其他编程语言中的三元运算符,但有一些细微的不同。在 Python 中,三目运算符的语法如下: value_if_true if cond…...

JVM 性能调优 -- CMS 垃圾回收器 GC 日志分析【Full GC】

前言: 上一篇我们分析了 Minor GC 的发生过程,因为 GC 日志没有按我们预估的思路进行打印,其中打印了 CMS 垃圾回收器的部分日志,本篇我们就来分析一下 CMS 垃圾收集日志。 JVM 系列文章传送门 初识 JVM(Java 虚拟机…...

PS的学习

背景差色较大,就魔棒 魔棒的连续就是倒水点的跨越问题 魔棒的容差的选择就有点看经验了,看颜色的统一程度选择 Ctrl D 取消当前所有的选区 至于快速选择工具,和对象选择工具也差不多,只不过控制范围变成了一块一块的&#x…...

数据集搜集器(百科)008

对数据集搜集器(百科)007进行一下改进: 错误处理:增加更多的错误处理,比如网络请求超时、解析错误等。 用户界面:增加一些提示信息,让用户更清楚当前的操作状态。 多线程处理:确保多…...

Java学习,反射

Java反射是Java编程语言的一个重要特性,它允许程序在运行时查看任意对象所属的类,获取类的内部信息(包括构造器、字段和方法等),并能动态地调用对象的方法或构造器。 反射概念 反射(Reflection&#xff09…...

数据结构 (18)数的定义与基本术语

前言 数据结构是计算机科学中的一个核心概念,它描述了数据元素之间的关系以及这些元素在计算机中的存储方式。 一、数的定义 在计算机科学中,“数”通常指的是树形数据结构,它是一种非线性的数据结构,由节点(或称为元素…...

Flink的双流join理解

如何保证Flink双流Join准确性和及时性、除了窗口join还存在哪些实现方式、究竟如何回答才能完全打动面试官呢。。你将在文中找到答案。 1 引子 1.1 数据库SQL中的JOIN 我们先来看看数据库SQL中的JOIN操作。如下所示的订单查询SQL,通过将订单表的id和订单详情表ord…...

《使用Python进行数据挖掘:理论、应用与案例研究》

嘿,今天我要给你们介绍一本使用Python进行数据挖掘的好书。这本书是由吴迪博士撰写的,他是雷曼学院商学院的助理教授,也是数据科学的实战派。 在这个时代,数据多得让人眼花缭乱,要从中找出有用的信息,那可不…...

Go语言技巧:快速统一字符串中的换行符,解决跨平台问题

统一字符串中的 Windows \r\n 换行符 — Go语言实现 在编程中,尤其是处理跨平台的文本数据时,换行符的处理是一个常见的问题。Windows 系统使用 \r\n 作为换行符,而 Unix-like 系统(如 Linux 和 macOS)使用 \n。在 Go…...

算法训练营day20(二叉树06:最大二叉树,合并二叉树,搜索二叉树,验证搜索二叉树)

第六章 二叉树 part06 今日内容 ● 654.最大二叉树 ● 617.合并二叉树 ● 700.二叉搜索树中的搜索 ● 98.验证二叉搜索树 详细布置 654.最大二叉树 又是构造二叉树,昨天大家刚刚做完 中序后序确定二叉树,今天做这个 应该会容易一些, 先看视…...

Leetcode(区间合并习题思路总结,持续更新。。。)

讲解题目:合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间, 并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。示例 1:输入&a…...

『python爬虫』使用docling 将pdf或html网页转为MD (保姆级图文)

目录 预览效果安装下载模型测试代码总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』 专栏,持续更新中 预览效果 支持转化pdf的表格 安装 Docling 本身是专注于文档转换的工具,通常用于将文件(如 PDF&…...

elasticsearch现有集群扩展节点

原文地址:elasticsearch现有集群扩展节点 – 无敌牛 欢迎参观我的个人博客:无敌牛 – 技术/著作/典籍/分享等 给现有的 elasticsearch 集群扩展节点比较容易,已有的集群不需要做任何修改,也不用对服务做任何处理,只需…...

力扣162:寻找峰值

峰值元素是指其值严格大于左右相邻值的元素。 给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。 你可以假设 nums[-1] nums[n] -∞ 。 你必须实现时间复杂度为 O(…...

Kafka-Connect

一、概述 Kafka Connect是一个在Apache Kafka和其他系统之间可扩展且可靠地流式传输数据的工具。细心的你会发现,我们编写的producer、consumer都有很多重复的代码,KafkaConnect就是将这些通用的api进行了封装。让我们可以只关心业务部分(数…...

递归、搜索与回溯算法 - 3 ( floodfill 记忆化搜素 9000 字详解 )

一:floodfill 算法 1.1 图像渲染 题目链接:图像渲染 class Solution {// 首先先定义四个方向的向量int[] dx {0, 0, 1, -1};int[] dy {1, -1, 0, 0};// 接着用 m 记录行数,n 记录列数,prev 记录 (sr, sc) 位置的…...

YOLOv9改进,YOLOv9引入CAS-ViT(卷积加自注意力视觉变压器)中AdditiveBlock模块,二次创新RepNCSPELAN4结构

摘要 CAS-ViT 是一种为高效移动应用设计的视觉Transformer。模型通过结合卷积操作与加性自注意机制,在保持高性能的同时显著减少计算开销,适合资源受限的设备如手机。其核心组件 AdditiveBlock 通过多维度信息交互和简化的加性相似函数,实现了高效的上下文信息整合,避免了…...

HDLCPPP原理与配置

前言: 广域网中经常会使用串行链路来提供远距离的数据传输,高级数据链路控制HDLC( High-Level Data Link Control )和点对点协议PPP( Point to Point Protocol)是两种典型的串口封装协议。 HDLC协议: 原理…...

react + vite 中的环境变量怎么获取

一、Vite 环境变量基础 创建一个.env文件,Vite 定义的环境变量需要以VITE_开头。 VITE_API_URL "http://localhost:3000/api" 生产模式创建.env.production。 VITE_API_URL "https://production-api-url.com/api" 二、在 React 组件中获…...

知识蒸馏中有哪些经验| 目标检测 |mobile-yolov5-pruning-distillation项目中剪枝知识分析

项目地址:https://github.com/Syencil/mobile-yolov5-pruning-distillation 项目时间:2022年 mobile-yolov5-pruning-distillation是一个以yolov5改进为主的开源项目,主要包含3中改进方向:更改backbone、模型剪枝、知识蒸馏。这里…...

Oracle 19c RAC单节点停机维护硬件

背景 RAC 环境下一台主机硬件光纤卡不定时重启,造成链路会间断几秒,期间数据库会话响应时间随之变长,该光纤卡在硬件厂商的建议下,决定停机更换备件,为保证生产影响最小,决定停掉该节点,另外节…...

Linux系统 进程

Linux系统 进程 进程私有地址空间用户模式和内核模式上下文切换 进程控制系统调用错误处理进程控制函数获取进程 ID创建和终止进程回收子进程让进程休眠加载并运行程序 进程 异常是允许操作系统内核提供进程(process)概念的基本构造块,进程是…...

机载视频流回传+编解码方案

无线网络,低带宽场景。不能直接转发ROS raw image(10MB/s),而要压缩(编码)后再传输。可以用rtsp的udp传输或者直接传输话题,压缩方法有theora(ROS image_transport默认支持&#xff…...

Ubuntu 20.04 Server版连接Wifi

前言 有时候没有网线口插网线或者摆放电脑位置不够时,需要用Wifi联网。以下记录Wifi联网过程。 环境:Ubuntu 20.04 Server版,无UI界面 以下操作均为root用户,如果是普通用户,请切换到root用户,或者在需要权…...

【VRChat 改模】开发环境搭建:VCC、VRChat SDK、Unity 等环境配置

一、配置 Unity 相关 1.下载 UnityHub 下载地址:https://unity.com/download 安装打开后如图所示: 2.下载 VRChat 官方推荐版本的 Unity 跳转界面(VRChat 官方推荐页面):https://creators.vrchat.com/sdk/upgrade/…...

人工智能的微积分基础

目录 ​编辑 引言 微积分的基本概念 1. 导数 2. 积分 3. 微分方程 微积分在人工智能中的应用 1. 机器学习中的优化 2. 反向传播算法 3. 概率与统计 4. 控制理论 5. 自然语言处理中的梯度 6. 计算机视觉中的积分 7. 优化算法中的微积分 8. 微分几何在深度学习中的…...

Android 基础类(01)- Thread类 - readyToRun和threadLoop

一、前言: 在阅读AOSP代码过程中,我们经常会看到Thread子类重写两个方法:readyToRun和threadLoop,不清楚的同学,可能在这儿连调用逻辑都搞不清楚了,因为找不到谁调用了它。我这儿先不去深究Thread内部逻辑…...

C++设计模式之构造器

动机 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。 如何…...

红日靶场-5

环境搭建 这个靶场相对于前几个靶场来说较为简单,只有两台靶机,其中一台主机是win7,作为我们的DMZ区域的入口机,另外一台是windows2008,作为我们的域控主机,所以我们只需要给我们的win7配置两张网卡&#…...

做异端中的异端 -- Emacs裸奔之路3: 上古神键Hyper

谈一下快捷捷冲突的问题。 Emacs几乎穷尽所有组合键 我用下面命令&#xff0c;在Fundamental模式下&#xff0c;枚举所有绑定。 (defun keymap-lookup-test-fn(); printable keys(setq printable-chars (number-sequence 33 126))(setq i 0)(while (< i (length printable…...

凡科网站制作/免费推广网站排行榜

C语言程序设计实验指导书(试用版)华中科技大学计算机学院2004年3月编写说明C语言程序设计的上机实验是进一步深刻了解C语言的语法、语义&#xff0c;掌握用C语言进行初步程序设计所需要的方法和技能的一个重要环节。优秀的程序员毫无例外的都是在机器上 “摸爬滚打”出来的。C语…...

成都网站建设哪家专业/武汉网站推广公司排名

测试产品 型号: TC-D56N1-30P采集卡参数: 1* HDMI 1.4输入, PCIe 接口为PCI-Express x4(Gen2), 最高支持4096x216030Hz, 支持1920x108060Hz, 支持HDMI音频采集, 支持HDCP测试环境 硬件: i7-6800K, 2AMD WX5100显卡, 28GB DDR4 2400Hz内存, 华硕 X99-A II主板, 6*Dell23寸1920x1…...

企业网站建设首页要写什么内容/四川网站推广公司

作者&#xff1a;yawn-silence来源&#xff1a;my.oschina.net/silenceyawen/blog/1609603依赖&#xff1a;新建springBoot项目时勾选activiti&#xff0c;或者在已建立的springBoot项目添加以下依赖&#xff1a;org.activiti activiti-spring-boot-starter-basic 6.0.0配…...

wordpress使用数据库/业务网站制作

最近在阿里云服务器上搭建了git仓库&#xff0c;并实现了代码自动同步到了web项目目录下&#xff0c;但是美中不足。如果吧本地的项目可以同时推送到github 上就更好了&#xff0c;为了实现这个效果百度了一下&#xff0c;借鉴其他人的博客搞成功了&#xff0c;在这里记录一下 …...

网站正在建设中 文案/长沙营销网站建设

函数初识 1.函数的好处 减少代码重复性(冗余)代码可读性高将功能进行封装(造工具)2.定义函数 def func():函数体def 关键字 --定义 func 函数名 --和变量定义规则一样 () --传递参数,必须要写的格式 : --声明语句结束 3.调用函数 def my_len():s (1,2,3,…...

网站分析怎么做/如何做好产品网络推广

写在前面 本文一起看下Dockerfile中经常用到的几个类似命令&#xff0c;RUN&#xff0c;CMD&#xff0c;ENTRYPOINT。 1&#xff1a;容器是怎么来的&#xff1f; 想要有容器我们就必须先创建镜像&#xff0c;而想要有镜像&#xff0c;我们则必须写一个用来描述想要创建的镜像…...