Python推导式详解

引言       

         推导式(Comprehensions)是Python中一种简洁且强大的语法结构,可以用来生成列表、字典和集合。推导式使得代码更加简洁、易读,同时也更具Pythonic风格。今天我将将详细介绍列表推导式、字典推导式和集合推导式,并通过例子来展示它们的使用方法,希望对大家有所帮助。

列表推导式

列表推导式是一种简洁的生成列表的方式。它的基本语法如下:

        [表达式 for 变量 in 列表]        [expression for item in iterable] 或者

        [表达式 for 变量 in 列表 if 条件]        [expression for item in iterable if condition]

其中,expression 是生成元素的表达式,item 是从 iterable(可迭代对象)中取出的元素,condition 是一个可选的过滤条件。

这样看你可能不是很理解,看几个例子吧。

示例:
1.生成平方数列表
squares = [x**2 for x in range(10)]
print(squares)
#输出结果为:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
2.过滤奇数
odd_numbers = [x for x in range(10) if x % 2 != 0]
print(odd_numbers)
#输出结果为:
[1, 3, 5, 7, 9]
3.嵌套循环 
pairs = [(x, y) for x in range(3) for y in range(3)]
print(pairs)
#输出结果为:
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

字典推导式

字典推导式用于生成字典。它的基本语法如下:

{键的表达式:值的表达式 for 变量 in 字典}

{key_expression: value_expression for item in iterable}

或者

{键的表达式:值的表达式 for 变量 in 字典 if 条件}

{key_expression: value_expression for item in iterable [if condition]}

示例:
1.生成平方字典
square_dict = {x: x**2 for x in range(10)}
print(square_dict)
#输出结果为:
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
 2.过滤值大于20的项
filtered_dict = {x: x**2 for x in range(10) if x**2 > 20}
print(filtered_dict)#输出结果为:
{5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
3.使用字符串键
char_count = {char: ord(char) for char in 'abcde'}
print(char_count)#输出结果为:
{'a': 97, 'b': 98, 'c': 99, 'd': 100, 'e': 101}

集合推导式

集合推导式用于生成集合。它的基本语法如下:

[表达式 for 变量 in 集合]

{expression for item in iterable}

或者

[表达式 for 变量 in 集合 if 条件]

{expression for item in iterable if condition}

示例:
1.生成平方集合
square_set = {x**2 for x in range(10)}
print(square_set)#输出结果为:
{0, 1, 64, 4, 36, 9, 16, 49, 81, 25}
2.过滤偶数 
even_set = {x for x in range(10) if x % 2 == 0}
print(even_set)#输出结果为:
{0, 2, 4, 6, 8}
3.去重
unique_chars = {char for char in 'abracadabra'}
print(unique_chars)
#输出结果为:{'d', 'c', 'b', 'r', 'a'}

结合示例

推导式不仅仅限于单一类型,还可以互相结合使用。例如,将列表推导式和字典推导式结合起来使用:

# 列表推导式生成键值对元组
pairs = [(x, x**2) for x in range(10)]
# 字典推导式生成字典
square_dict = {key: value for (key, value) in pairs}
print(square_dict)#输出结果为:
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

 总结

        推导式是Python中非常有用的工具,能让代码更简洁易读。在需要生成列表、字典和集合时,推导式提供了一种优雅的解决方案。通过掌握列表、字典和集合的推导式,可以让你的Python代码更具表现力和效率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/23958.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面试——中间件

OpenFeign 1、openFeign是一个HTTP客户端,它融合了springmvc的注解,使之可以用REST风格的映射来请求转发。 2、可以把openFegin理解为是controller层或是service层。可以取代springmvc控制层作为请求映射,亦或是作为service层处理逻辑&#…

Three.js和Babylon.js,webGL中的对比效果分析!

hello,今天分享一些three.js和babylon.js常识,为大家选择three.js还是babylon.js做个分析,欢迎点赞评论转发。 一、Babylon.js是什么 Babylon.js是一个基于WebGL技术的开源3D游戏引擎和渲染引擎。它提供了一套简单易用的API,使开发…

Threejs-02、坐标辅助器与轨道控制器使用

一、坐标辅助器 1、添加坐标辅助器 // 添加世界坐标辅助器 const axesHelper = new THREE.AxesHelper(2); scene.add(axesHelper);2、调整相机位置 //设置相机位置 camera.

卫星通信频段有哪些

卫星通信使用到的频段涵盖L, S, C, Ku, Ka等,而最常用的频段是C(4~8GHz)和Ku(12~18GHz)频段,而Ka(27-40GHz)频段是后起之秀。目前地球赤道上空有限的地球同步卫星轨位几乎已被各国占满,C和Ku频段内的频率资源被大量使用,而Ka频段的…

【Unity】Unity单例封装

Unity开发中经常会用到单例&#xff0c;下面是对单例的封装 C#单例 无需挂载 public class Singleton<T> where T : Singleton<T>, new(){public static T Instance { get; } new T();protected Singleton(){}}Unity单例 需要挂载对象 子类如果使用Awake需要重写…

微软必应地图的三维实景功能

偶然看到微软必应地图的三维实景功能&#xff0c;由于比较感兴趣这方面的技术&#xff0c;所以试用了一下,感觉总体来说技术上比咱们自己的技术和设计要好很多。比如这个工具栏就设计的很简洁&#xff0c;人性化&#xff1a; 而且实景地图的范围也非常大&#xff0c;建立这么大…

webpack 优化构建速度的插件

1.HardSourceWebpackPlugin本地缓存 HardSourceWebpackPlugin这个插件比DLL动态链接库更优秀 HardSourceWebpackPlugin是webpack的插件&#xff0c;为模块提供中间缓存步骤。为了查看结果&#xff0c;您需要使用此插件运行webpack两次&#xff1a;第一次构建将花费正常的时间…

3038. 相同分数的最大操作数目 I Easy

给你一个整数数组 nums &#xff0c;如果 nums 至少 包含 2 个元素&#xff0c;你可以执行以下操作&#xff1a; 选择 nums 中的前两个元素并将它们删除。 一次操作的 分数 是被删除元素的和。 在确保 所有操作分数相同 的前提下&#xff0c;请你求出 最多 能进行多少次操作。…

15天搭建ETF量化交易系统Day7—全自动化交易系统

搭建过程 每个交易者都应该形成一套自己的交易系统。 很多交易者也清楚知道&#xff0c;搭建自己交易系统的重要性。现实中&#xff0c;从&#xff10;到&#xff11;往往是最难跨越的一步。 授人鱼不如授人以渔&#xff0c;为了帮助大家跨出搭建量化系统的第一步&#xff0c;我…

HEXO博客常用命令(自用)

1、配置类命令 预览命令 hexo s 上传本地仓库&#xff1a; hexo g提交&#xff1a; hexo d更换主题&#xff1a;在_config.yml文件中&#xff1a;注意属性后面要跟着 # Extensions ## Plugins: https://hexo.io/plugins/ ## Themes: https://hexo.io/themes/ theme: vola…

嵌入式Linux系统编程 — 2.3 标准I/O库:格式化I/O

目录 1 格式化I/O简介 2 格式化输出 2.1 格式化输出函数简介 2.2 格式控制字符串 format 2.3 示例程序 3 格式化输入 3.1 格式化输入简介 3.2 格式控制字符串 format 3.3 示例程序 1 格式化I/O简介 在先前示例代码中&#xff0c;经常使用库函数 printf() 来输出程序中…

HTML5常用标签表单from

form表单标签 <!-- form表单其实就是一种&#xff1a;客户端和服务端数据交流一种方式机制。1&#xff1a; 服务端&#xff0c;提供数据接受地址&#xff08;gin/beego/inris&#xff09;比如&#xff1a;http://localhost:8080/toLogin2: 因为浏览器&#xff0c;在提交数据…

知识的丰盈与人类的好奇心——在互联网与人工智能时代的思考

在这个信息爆炸的时代&#xff0c;互联网和人工智能的发展如同双翼&#xff0c;赋予了人类前所未有的知识获取能力。一个问题&#xff0c;通过简单的关键词输入&#xff0c;几乎可以立即得到海量答案。这不禁引发人们的思考&#xff1a;我们的问题是否会越来越少&#xff1f;答…

基于LangChain+LLM构建增强QA

前言 本文基于LangChain构建了针对自有领域数据的增强QA&#xff0c;支持以下数据源&#xff1a; 针对领域内需要精确回答的问题&#xff0c;从自有DB中查询&#xff1b;针对领域内其他自然语言QA&#xff0c;从自有知识的embedded向量数据库查询&#xff1b;针对领域内其他较…

硬件I2C读写MPU6050

硬件I2C读写MPU6050 SCL接PB10&#xff0c;SDA接PB11,但是硬件I2C引脚不可以任意指定。 查询引脚定义表&#xff0c;来规划引脚。但由于PB6,7,8,9被OLEDz占用&#xff0c;不方便接线了。 可以使用I2C2引脚&#xff0c;但必须是SCL对应PB10&#xff0c;SDA对应PB11&#xff0c;…

python类与面向对象编程

⚠️⚠️⚠️本章后半部分难度激增&#xff0c;请一定认真学习⚠️⚠️⚠️ ⚠️⚠️⚠️本章后半部分难度激增&#xff0c;请一定认真学习⚠️⚠️⚠️ ⚠️⚠️⚠️本章后半部分难度激增&#xff0c;请一定认真学习⚠️⚠️⚠️ 上篇回顾&#xff1a; 上篇我们帮天下第一…

冯喜运:6.7今日外汇黄金原油走势分析及日内操作策略

【黄金消息面分析】&#xff1a;美国初请失业金人数超预期&#xff0c;市场对美联储9月降息预期升温&#xff0c;全球降息潮起&#xff0c;黄金市场受支撑。北京时间本周四&#xff0c;美国劳工部公布的数据显示&#xff0c;截至6月1日当周初请失业金人数增加至22.9万人&#x…

docker bash: vi: command not found 修改文件无法使用 vi yum的方法

如题&#xff0c;被入坑很多次。也参考了很多的修复docker 中的vi yum等方法。最终都未解决。 因为要修改 已安装容器中的各类配置信息。无法使用vi yum很麻烦。除去使用docker 挂载文件方法外&#xff0c;还可以使用如下方法直接修改对应的配置文件信息。 如: 修改 logstas…

input 输入框只能输入数字的处理方式

1. 针对普通的 el-input <el-form-item prop"sortNo"><el-input v-model"form.sortNo" input"val > (form.sortNo handlerInput(val))"> </el-input> </el-form-item> handlerInput(val) {if (val) {if (/^0*$/.…

AWS对S3桶里的文件设置签名验证,过期时间等

AWS 可以对S3桶的文件设置访问权限&#xff0c;当设置不公开访问的时候&#xff0c;又要让用户可以查看&#xff0c;那么就需要用到设置临时访问权限了 亚马逊 CloudFront 网址进行签名 /*** CDN域名使用* 给某个文件设置临时过期时间的url* param $filePath* return mixed|st…