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

Python 列表推导式与字典推导式的实现

在 Python 中推导式是一种非常 Pythonic 的知识本篇博客将为你详细解答列表推导式与字典推导式相关的技术知识。列表推导式列表推导式可以利用列表元组字典集合等数据类型快速的生成一个特定需要的列表。语法格式如下[表达式 for 迭代变量 in 可迭代对象 [if 条件表达式]]if 条件表达式 非必选学完列表推导式之后你可以发现它就是 for 循环的一个变种语句例如咱们现有一个需求是将一个列表中的所有元素都变成原值的 2 倍。for 循环写法123456my_list[1,2,3]new_list[]foriinmy_list:new_list.append(i*2)print(new_list)列表推导式写法12nn_list[i*2foriinmy_list]print(nn_list)是不是对比看就是将 for 循环语句做了变形之后增加了一个 []不过需要注意的是列表推导式最终会将得到的各个结果组成一个新的列表。再看一下列表推导式语法构成 nn_list [i*2 for i in my_list] for 关键字后面就是一个普通的循环前面的表达式 i*2 其中的 i 就是 for 循环中的变量也就是说表达式可以用后面 for 循环迭代产生的变量理解这个内容列表推导式就已经掌握 9 成内容了剩下的是熟练度的问题。在将 if 语句包含进代码中运行之后你也能掌握基本技巧if 语句是一个判断其中 i 也是前面循环产生的迭代变量。12nn_list[i*2foriinmy_listifi1]print(nn_list)这些都是一般技能列表推导式能支持两层 for 循环例如下述代码12nn_list[(x,y)forxinrange(3)foryinrange(3) ]print(nn_list)当然如果你想**加密谁都看不懂你的代码**你的代码你可以无限套娃下去列表推导式并没有限制循环层数多层循环就是一层一层的嵌套你可以展开一个三层的列表推导式就都明白了12nn_list[(x,y,z,m)forxinrange(3)foryinrange(3)forzinrange(3)forminrange(3)]print(nn_list)当然在多层列表推导式里面依旧支持 if 语句并且 if 后面可以用前面所有迭代产生的变量不过不建议超过 2 成超过之后会大幅度降低你代码的可阅读性。当然如果你希望你代码更加难读下面的写法都是正确的。123456nn_list[(x, y, z, m)forxinrange(3)ifx 1foryinrange(3)ify 1forzinrange(3)forminrange(3)]print(nn_list)nn_list[(x, y, z, m)forxinrange(3)foryinrange(3)forzinrange(3)forminrange(3)ifx 1andy 1]print(nn_list)nn_list[(x, y, z, m)forxinrange(3)foryinrange(3)forzinrange(3)forminrange(3)ifx 1ify 1]print(nn_list)现在你已经对列表推导式有比较直观的概念了列表推导式对应的英文是 list comprehension有的地方写作列表解析式基于它最后的结果它是一种创建列表的语法并且是很简洁的语法。有了两种不同的写法那咱们必须要对比一下效率经测试小数据范围影响不大当循环次数到千万级时候出现了一些差异。123456789101112importtimedefdemo1():new_list[]foriinrange(10000000):new_list.append(i*2)defdemo2():new_list[i*2foriinrange(10000000)]s_timetime.perf_counter()demo2()e_timetime.perf_counter()print(代码运行时间, e_time-s_time)运行结果# for 循环代码运行时间 1.3431036140000001# 列表推导式代码运行时间 0.9749278849999999在 Python3 中列表推导式具备局部作用域表达式内部的变量和赋值只在局部起作用表达式的上下文里的同名变量还可以被正常引用局部变量并不会影响到它们。所以其不会有变量泄漏的问题。例如下述代码12345x6my_var[x*2forxinrange(3)]print(my_var)print(x)列表推导式还支持嵌套参考代码如下只有想不到没有做不到的。12my_var[y*4foryin[x*2forxinrange(3)]]print(my_var)字典推导式有了列表推导式的概念字典推导式学起来就非常简单了语法格式如下{键:值 for 迭代变量 in 可迭代对象 [if 条件表达式]}直接看案例即可12my_dict{key: valueforkeyinrange(3)forvalueinrange(2)}print(my_dict)得到的结果如下{0: 1, 1: 1, 2: 1}此时需要注意的是字典中不能出现同名的 key第二次出现就把第一个值覆盖掉了所以得到的 value 都是 1。最常见的哪里还是下述的代码遍历一个具有键值关系的可迭代对象。123my_tuple_list[(name,橡皮擦), (age,18),(class,no1), (like,python)]my_dict{key: valueforkey, valueinmy_tuple_list}print(my_dict)元组推导式与集合推导式其实你应该能猜到在 Python 中是具备这两种推导式的而且语法相信你已经掌握了。不过语法虽然差不多但是元组推导式运行结果却不同具体如下。12my_tuple(iforiinrange(10))print(my_tuple)运行之后产生的结果generator object genexpr at 0x0000000001DE45E8使用元组推导式生成的结果并不是一个元组而是一个生成器对象需要特别注意下这种写法在有的地方会把它叫做生成器语法不叫做元组推导式。集合推导式也有一个需要注意的地方先看代码12my_set{valueforvalueinHelloWorld}print(my_set)因为集合是无序且不重复的所以会自动去掉重复的元素并且每次运行显示的顺序不一样使用的时候很容易晕掉。总结

相关文章:

Python 列表推导式与字典推导式的实现

在 Python 中推导式是一种非常 Pythonic 的知识,本篇博客将为你详细解答列表推导式与字典推导式相关的技术知识。列表推导式列表推导式可以利用列表,元组,字典,集合等数据类型,快速的生成一个特定需要的列表。语法格式…...

OBS模糊插件终极指南:5分钟掌握专业视频模糊特效

OBS模糊插件终极指南:5分钟掌握专业视频模糊特效 【免费下载链接】obs-composite-blur A comprehensive blur plugin for OBS that provides several different blur algorithms, and proper compositing. 项目地址: https://gitcode.com/gh_mirrors/ob/obs-compo…...

NI硬件平台在结构健康监测中的技术选型与应用

1. NI硬件平台在结构健康监测中的技术选型结构健康监测系统的核心挑战在于如何将物理世界的振动、应变等机械信号转化为可分析的数字化数据。NI的硬件平台之所以成为行业首选,关键在于其模块化设计理念完美匹配了监测系统对灵活性、精度和可靠性的严苛要求。1.1 Com…...

如何用WeChatMsg掌握你的微信数据主权:从聊天记录到数字记忆的完整指南

如何用WeChatMsg掌握你的微信数据主权:从聊天记录到数字记忆的完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_T…...

为什么你的Windows桌面需要一个免费的智能分区管家?

为什么你的Windows桌面需要一个免费的智能分区管家? 【免费下载链接】NoFences 🚧 Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否也曾面对过这样的场景:周一早上打开电脑&am…...

Cyrus:自托管AI编码代理部署与实战,打造自动化开发流水线

1. 项目概述:一个能帮你写代码的“数字员工” 如果你和我一样,每天要在Linear、GitHub、Slack这些工具之间来回切换,处理数不清的工单、Issue和PR评论,那你肯定想过:要是能有个“数字员工”帮我处理这些重复性的编码任…...

网盘直链下载助手终极指南:一键解锁八大网盘高速下载

网盘直链下载助手终极指南:一键解锁八大网盘高速下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...

Keil MDK与NXP Cortex-M4/M0开发环境搭建及调试技巧

1. Keil MDK与NXP Cortex-M4/M0开发环境搭建1.1 硬件准备与连接开发板选择上,我推荐使用Keil MCB4300评估板,它搭载了NXP LPC4357双核处理器(Cortex-M4M0)。实际项目中,我发现这款板子的外设接口布局非常合理&#xff…...

别再只用map了!Java Stream里mapToInt()的3个实战场景与性能对比

别再只用map了!Java Stream里mapToInt()的3个实战场景与性能对比 如果你还在用map()处理所有Java Stream转换操作,可能已经错过了性能优化的关键技巧。mapToInt()作为专门处理原始类型int的流操作,在特定场景下能带来显著的效率提升。让我们通…...

从DIY爱好者视角看ZEMAX:如何用软件‘打磨’你的第一块200mm F/5牛顿望远镜主镜

从DIY爱好者视角看ZEMAX:如何用软件‘打磨’你的第一块200mm F/5牛顿望远镜主镜 当深夜的天文爱好者决定亲手磨制一块200mm口径的牛顿望远镜主镜时,ZEMAX这个光学设计软件就成为了数字世界的"磨镜台"。不同于工业级光学设计,DIY场景…...

从透明物体到日常场景:一份给机器人开发者的RGBD深度补全算法选型与避坑实战指南

从透明物体到日常场景:机器人视觉中的RGBD深度补全算法实战指南 当机械臂试图抓取玻璃杯时,为什么总是"失手"?这个问题困扰着无数机器人开发者。透明物体在RGBD相机中呈现的深度信息缺失,仅仅是深度补全技术面临的冰山一…...

用Python+Playwright打造你的BOSS直聘求职外挂:从接口分析到自动回复的保姆级教程

PythonPlaywright实战:BOSS直聘自动化求职系统开发指南 求职季最耗时的环节莫过于重复投递简历和机械回复消息。作为开发者,我们完全可以用技术手段优化这一过程。本文将带你从零构建一个基于Playwright的自动化求职系统,涵盖接口逆向、消息…...

国产项目管理工具哪家更适合企业?5款主流产品对比分析

本文将深入对比5款国产项目管理系统:PingCode、Worktile、TAPD、阿里云效、CODING DevOps。一、国内企业选择国产项目管理系统的核心判断维度1、先判断你需要的是“研发管理平台”还是“通用项目协作平台”这一步很关键。很多企业选型时一上来就看功能页&#xff0c…...

基于深度学习的FasterRCNN水下图像复原识别 图像处理和图像复原检测

项目概述:Waternet_FasterRCNN 本项目旨在结合深度学习技术进行水下图像的还原与分析,综合应用 WaterNet 和 Faster R-CNN 来完成以下功能: 水下图像还原:利用 WaterNet 修复和增强水下图像质量。色板检测与提取:通过…...

别再乱调波特率了!SSCOM V5.13.1串口调试最全避坑指南(附虚拟串口VSPD联动教程)

SSCOM串口调试实战:从参数配置到虚拟联通的完整避坑手册 第一次打开SSCOM时,面对密密麻麻的选项和参数,很多新手会直接套用网上的"万能配置"——波特率115200、8N1、十六进制显示。但当你发现设备毫无反应时,才意识到串…...

实战指南:如何构建高效的i茅台自动化预约系统

实战指南:如何构建高效的i茅台自动化预约系统 【免费下载链接】campus-imaotai i茅台app自动预约,每日自动预约,支持docker一键部署(本项目不提供成品,使用的是已淘汰的算法) 项目地址: https://gitcode.…...

番茄小说下载器完整指南:告别网络限制,随时随地畅读小说

番茄小说下载器完整指南:告别网络限制,随时随地畅读小说 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 你是否曾经在地铁上、飞机上或者网络信号不好的地方&#x…...

机器学习开发环境搭建与优化全攻略

1. 机器学习开发环境全景解读 在算法工程师的日常工作中,开发环境就像厨师的灶台、画家的调色板。我经历过无数次因为环境配置不当导致的"凌晨三点debug"惨剧,也见证过合理配置的环境如何让模型迭代效率提升300%。一个完整的ML开发环境远不止安…...

ROS2机器人实时控制入门:手把手教你用EtherLab和ethercat_driver_ros2连接EtherCAT从站

ROS2与EtherCAT实战:从硬件连接到实时控制 工业自动化领域正在经历一场由开源工具带来的变革,ROS2与EtherCAT的结合为机器人开发者提供了前所未有的灵活性和实时控制能力。本文将带你深入理解如何搭建这套系统,从硬件连接到ROS2节点开发&…...

5分钟学会:本地化视频字幕提取神器,87种语言一键转换SRT

5分钟学会:本地化视频字幕提取神器,87种语言一键转换SRT 【免费下载链接】video-subtitle-extractor 视频硬字幕提取,生成srt文件。无需申请第三方API,本地实现文本识别。基于深度学习的视频字幕提取框架,包含字幕区域…...

如何3分钟免费激活Windows和Office:KMS_VL_ALL_AIO智能激活指南

如何3分钟免费激活Windows和Office:KMS_VL_ALL_AIO智能激活指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否刚重装完系统,却发现Windows提示"需要激活&qu…...

PvZ Toolkit:让经典游戏重获新生的开源魔法棒

PvZ Toolkit:让经典游戏重获新生的开源魔法棒 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit 还记得小时候熬夜玩《植物大战僵尸》的时光吗?阳光总是不够用,最后…...

别再傻傻分不清了!一张图看懂PON网络里的OLT、ONU和光猫到底啥关系

一图读懂PON网络:OLT、ONU和光猫的"水表家族"关系 每次看到宽带师傅在楼道里摆弄那些带着光纤的小盒子,你是否好奇过它们究竟如何把千兆网络送进你家?当听到"OLT"、"ONU"、"分光器"这些专业术语时&a…...

WPS-Zotero终极指南:5分钟实现WPS与Zotero无缝对接的完整方案

WPS-Zotero终极指南:5分钟实现WPS与Zotero无缝对接的完整方案 【免费下载链接】WPS-Zotero An add-on for WPS Writer to integrate with Zotero. 项目地址: https://gitcode.com/gh_mirrors/wp/WPS-Zotero 还在为学术论文中的文献引用而烦恼吗?想…...

智能任务流引擎TaskFlow:Java并发编程与MCP集成的开发实践

1. 项目概述:一个为现代开发者打造的智能任务流引擎最近在折腾一个挺有意思的玩意儿,叫taskflow。这名字听起来平平无奇,对吧?市面上任务管理工具一抓一大把,从 Trello 到 Todoist,从 Jira 到 Notion 的看板…...

如何安全备份微信聊天记录?WeChatMsg让数据主权回归用户

如何安全备份微信聊天记录?WeChatMsg让数据主权回归用户 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeC…...

Unity在Ubuntu 22.04下输入框打不了中文?手把手教你用C#和NPinyin库自己造一个输入法

Unity在Ubuntu 22.04下实现中文输入的工程实践 当你在Ubuntu 22.04上使用Unity开发应用程序时,可能会遇到一个令人沮丧的问题:系统输入法无法在Unity的InputField中输入中文。这个问题困扰着许多开发者,尤其是那些需要为中文用户开发应用的团…...

从医学诊断到风控模型:DeLong检验的‘跨界’应用指南,附R语言与Stata实操对比

从医学诊断到风控模型:DeLong检验的‘跨界’应用指南,附R语言与Stata实操对比 在数据科学领域,经典统计方法的跨学科迁移往往能带来意想不到的突破。1988年由DeLong等人提出的ROC曲线比较方法,最初用于评估卵巢癌诊断模型的性能差…...

基于AI的求职代理系统:架构设计与工程实践

1. 项目概述:一个能帮你找工作的智能体 最近在GitHub上看到一个挺有意思的项目,叫“Job_search_agent”。光看名字,你大概能猜到,这是一个帮你找工作的自动化工具。但具体怎么帮?是海投简历,还是智能筛选&a…...

【多旋翼无人机姿态估计】适用于无人机的姿态估计算法,聚焦于线性与非线性姿态估计器的开发与测试,以及在不同飞行条件与环境下的估计器性能评估研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...