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

python中的推导式

目录

初识推导式

推导式的定义

推导式的常用使用场景

推导式的特点

推导式的种类

列表推导式

字典推导式

集合推导式


初识推导式

推导式的定义

Python 提供的一种快速生成序列(如列表、集合、字典等)的语法,他的主要作用是简化代码结构。

语法结构:

数据加工 for 数据产生 if 数据筛选

名称功能说明例如
数据加工对每个数据进行处理生成新的结果x+1
数据产生从已有的数据集中逐个获取元素for i in range(5)
数据筛选(可有可无)对数据进行条件过滤

if i%2==0

推导式的常用使用场景

  • 从一个序列中筛选数据,快速过滤符合条件的元素
  • 对原数据进行加工处理、格式转换、数学运算等
  • 组合两个序列,生成新的列表或字典或嵌套列表
  • 元素去重(运用集合推导式)
  • 字典的重构与翻转

推导式的特点

简洁高效
多结构支持可筛选
可嵌套易理解

推导式的种类

类型结构形式用途
列表推导式[表达式 for...]筛选、加工、生成新列表
字典推导式{k:v for...}构建新字典、筛选、反转
集合推导式{表达式 for...}去重、生成唯一元素集合

列表推导式

语法结构:

[表达式 for 变量 in 可迭代对象 if 条件]

用途:简洁地构建新列表,过滤元素,元素变换,嵌套循环。

例如,勇者从药剂师那里收到了一个混乱的药材列表,其中包含一些无用的杂草(如杂草),他只想保留真正有用的药材,并将它们都加上(已确认)标记,以便记录。以下为药剂师的混乱的药材列表:

["火焰花", "杂草", "蓝露果", "杂草", "夜影叶", "星辰草", "杂草"]

grass = ["火焰花", "杂草", "蓝露果", "杂草", "夜影叶", "星辰草", "杂草"]
after_grass = [i+'(已确认)' for i in grass if i!='杂草']
print(after_grass)

对代码进行运行测试:

字典推导式

语法结构:

{键表达式: 值表达式 for 变量 in 可迭代对象 if 条件}

用途:快速创建键值对,反转字典,基于条件筛选字典元素。

例如,冒险前,勇者向村民们收集药品,每个人给的数量不同,部分村民手上是“空瓶”(数量为 0),不应该被记录。以下是每个人手中药品的数量:

raw_potions = {'艾琳': 3,'格雷': 0,'莉莉丝': 5,'村长': 1,'老猎人': 0}

raw_potions = {'艾琳': 3,'格雷': 0,'莉莉丝': 5,'村长': 1,'老猎人': 0}
valid_potions = {name: count for name, count in raw_potions.items() if count > 0}
print(valid_potions)

对代码进行运行测试:

集合推导式

语法结构:

{表达式 for 变量 in 可迭代对象 if 条件}

用途:去重,快速构建集合,集合变换,生成满足条件的唯一元素集合。

例如,勇者一天内经历了多场战斗,记录了所有出现的怪物名字,但很多是重复的。现在要整理出独特的怪物种类,用于战斗报告。以下是勇者遇到过的怪物列表:

['史莱姆', '哥布林', '史莱姆', '史莱姆', '兽人', '哥布林', '龙']

monster = ['史莱姆', '哥布林', '史莱姆', '史莱姆', '兽人', '哥布林', '龙']
monster_type = {i for i in monster}
print(monster_type)

对代码进行运行测试:

http://www.dtcms.com/a/318223.html

相关文章:

  • Android PDFBox 的使用指南
  • 力扣热题100------136.只出现一次的数字
  • 【纵火犯的春天】纵火犯是如何解题leetcode的?
  • Python驱动的无人机多光谱-点云融合技术在生态三维建模与碳储量/生物量/LULC估算中的全流程实战
  • JDK9+ Method.class.getDeclaredFields() Method实例将不能再直接通过反射修改
  • 无人机航拍数据集|第4期 无人机太阳光伏板红外目标检测YOLO数据集10945张yolov11/yolov8/yolov5可训练
  • 大疆无人机使用eport连接Jetson主板实现目标检测
  • selenium操作指南
  • 前端路由守卫
  • JavaWeb服务器/servlet容器(Tomcat、Undertow 、WebLogic)
  • 前端应用场景题目(待总结优化)
  • 攻防世界WEB(新手模式)20-unseping
  • 基于 kubeadm 搭建 k8s 集群
  • 京东商品评论接口开发全指南:从数据获取到分析应用实战
  • 【20205CVPR-目标检测方向】基于事件的高效目标检测:具有空间和时间注意力的混合神经网络
  • Lodash 的终极进化Radashi
  • JAVA 程序员cursor 和idea 结合编程
  • 北京JAVA基础面试30天打卡03
  • SAP MR51 显示不是ALV格式的问题
  • 开源远程工具rustdesk
  • 力扣 hot100 Day67
  • Linux firewall 防火墙管理
  • SpringBoot 接入SSE实现消息实时推送的优点,原理以及实现
  • React:生命周期
  • 二、Istio流量治理(一)
  • 佳文鉴赏 || FD-LLM:用于机器故障诊断的大规模语言模型
  • 性能为王:一次从压测到调优的实战全流程复盘
  • PHP常用日期时间函数
  • 线程-线程池篇(二)
  • 【CSS】动态修改浏览器滚动条宽度