Python——列表(list)推导式
本文基于python3。
目录
- 1、Python推导式
- 2、列表(list)推导式
- 2.1、定义
- 2.2、实际操作
- 2.2.1、一个表达式,后面为一个 for 子句
- 2.2.2、一个表达式,后面为一个 for 子句,然后,跟着if 子句。
- 2.2.3、一个表达式,后面为一个 for 子句,然后,跟着 for 子句。
- 2.2.4、一个表达式,后面为一个 for 子句,然后,跟着 for 子句,if 语句
- 2.2.5、表达式的不同
- 2.2.5.1、表达式是函数
- 2.2.5.2、表达式是元组
- 2.2.5.2、表达式是复杂的表达式和嵌套函数
- 3、利用列表推导式实现乘法口诀
- 4、总结
1、Python推导式
你可以理解成一种数据的处理方式。目的是为了构建一个新的数据序列。
Python 支持各种数据结构的推导式:
- 列表(list)推导式
- 字典(dict)推导式
- 集合(set)推导式
- 元组(tuple)推导式
各自从字面意思就知道,创建一个列表、字典、集合、元组。
我们本文只看列表(list)推导式。
2、列表(list)推导式
列表推导式创建列表的方式更简洁。
常见的用法:
- 对序列或可迭代对象中的每个元素应用某种操作,用生成的结果创建新的列表。
- 用满足特定条件的元素创建子序列。
2.1、定义
定义主要有两种:(该部分定义来自:菜鸟教程)
- 定义1:
[表达式 for 变量 in 列表]
[out_exp_res for out_exp in input_list]
- 定义2
[表达式 for 变量 in 列表 if 条件]
[out_exp_res for out_exp in input_list if condition]
- out_exp_res:列表生成元素表达式,可以是有返回值的函数。
- for out_exp in input_list:迭代 input_list 将 out_exp 传入到 out_exp_res 表达式中。
- if condition:条件语句,可以过滤列表中不符合条件的值。
总结:一个表达式,后面为一个 for 子句,然后跟着零个或多个 for 或 if 子句。结果是由表达式依据 for 和 if 子句求值计算而得出一个新列表。
基于总结话我们来实际操作一下。
2.2、实际操作
2.2.1、一个表达式,后面为一个 for 子句
创建 数值*2 的列表:
TestList = [x*2 for x in range(10)]print(TestList)
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
等价于以下语句:
TestList = []
for x in range(10):TestList.append(x*2)print(TestList)
2.2.2、一个表达式,后面为一个 for 子句,然后,跟着if 子句。
创建 全是偶数 的列表:
TestList = [i for i in range(10) if i % 2 == 0]print(TestList)
# [0, 2, 4, 6, 8]
等价于以下语句:
TestList = []
for i in range(10):if i % 2 == 0:TestList.append(i)print(TestList)
2.2.3、一个表达式,后面为一个 for 子句,然后,跟着 for 子句。
直接上实例,一看就懂:
OldList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]TestList = [j for i in OldList for j in i]print(TestList)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
等价于以下语句:
OldList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
TestList = []for i in OldList:for j in i:TestList.append(j)print(TestList)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
2.2.4、一个表达式,后面为一个 for 子句,然后,跟着 for 子句,if 语句
直接上实例:
OldList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]TestList = [j for i in OldList for j in i if j % 2 == 0]print(TestList)
# [2, 4, 6, 8]
等价于以下语句:
OldList = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
TestList = []for i in OldList:for j in i:if j % 2 == 0:TestList.append(j)print(TestList)
# [2, 4, 6, 8]
2.2.5、表达式的不同
因为列表生成元素表达式,可以是有返回值的函数。因此就有一些其他用法。
2.2.5.1、表达式是函数
OldList = [' AA', ' BB ', 'CC ']
TestList = [i.strip() for i in OldList]
# strip():去掉前后空格print(TestList)
# ['AA', 'BB', 'CC']
2.2.5.2、表达式是元组
TestList = [(x, x**2) for x in range(6)]print(TestList)
# [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]
注意:使用元组必须带小括号。
# 没带小括号
TestList = [x, x**2 for x in range(6)]
print(TestList)# 错误信息
/Scripts/python.exe d:/05.ProjectWork/00.Python/00.Project/test_python/test.pyFile "d:/05.ProjectWork/00.Python/00.Project/test_python/test.py", line 192TestList = [x, x**2 for x in range(6)]^
SyntaxError: invalid syntax
2.2.5.2、表达式是复杂的表达式和嵌套函数
from math import pi
TestList = [str(round(pi, i)) for i in range(1, 9)]print(TestList)
# ['3.1', '3.14', '3.142', '3.1416', '3.14159', '3.141593', '3.1415927', '3.14159265']
3、利用列表推导式实现乘法口诀
直接上代码:
print("\n".join([" ".join(["{}*{}={}".format(x, y, x*y) for x in range(1,y+1)]) for y in range(1,10)]))
结果如下:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81

4、总结
其实我们看这些实例,他们的规律就是:
最前面的表达式就是最后这个值做了怎么样的处理。
后面的for、if语句,从左到右依次,一层一层嵌套进去,进行处理。
如果有问题,请指出,或者copy了谁的,也请指出。
会及时更正。
相关文章:
Python——列表(list)推导式
本文基于python3。 目录 1、Python推导式2、列表(list)推导式2.1、定义2.2、实际操作2.2.1、一个表达式,后面为一个 for 子句2.2.2、一个表达式,后面为一个 for 子句,然后,跟着if 子句。2.2.3、一个表达式,后面为一个…...
代码随想录算法训练营day43 | LeetCode 1049. 最后一块石头的重量 II 494. 目标和 474. 一和零
1049. 最后一块石头的重量 II(题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台) 思路:把全部石头重量加起来,然后除以二,就等于背包的最大容量。然后就可以按照背包问题…...
Linux安装jdk、mysql、并部署Springboot项目
😜作 者:是江迪呀✒️本文关键词:Linux、环境安装、JDK安装、MySQL、MySQL安装☀️每日 一言:知行合一! 文章目录 一、前言二、安装步骤2.1 安装JDK(1)创建文件夹(便于后…...
tomcat更改端口号和隐藏端口号
因为默认端口:8080不会自动隐藏,因此为了更显格调需要将其改为:80 进入tomcat的server文件 将其改为80,之后将tomcat重新启动即可 tomcat启动流程 [rootshang ~]# cd /usr/local/tomcat/apache-tomcat-8.5.92 [rootshang apache-tomcat-8.5.92]# cd b…...
生信分析Python实战练习 2 | 视频19
开源生信 Python教程 生信专用简明 Python 文字和视频教程 源码在:https://github.com/Tong-Chen/Bioinfo_course_python 目录 背景介绍 编程开篇为什么学习Python如何安装Python如何运行Python命令和脚本使用什么编辑器写Python脚本Python程序事例Python基本语法 数…...
wps设置其中几页为横版
问题:写文档的时候,有些表格列数太多,页面纵向显示内容不完整,可以给它改成横向显示。 将鼠标放在表格上一页的底部,点击‘插入-分页-下一页分节符’。 将鼠标放在表格页面的底部,点击‘插入-分页-下一页分…...
如何在Ubuntu 22.04上安装PHP 8.1并设置本地开发环境
引言 PHP是一种流行的服务器脚本语言,用于创建动态和交互式web页面。开始使用你选择的语言是学习编程的第一步。 本教程将指导您在Ubuntu上安装PHP 8.1,并通过命令行设置本地编程环境。您还将安装依赖管理器Composer,并通过运行脚本来测试您…...
wazuh安装与使用
目录 一、wazuh安装 二、wazuh使用 一、wazuh安装 下载:https://wazuh.com 可以直接安装OVA这个,然后导入到Linux中就可以使用了。 导入完毕后开启,使用远程连接工具进行连接,出现以下画面则成功了。 之后可以看一下图形化界面…...
Vue 3 常见面试题汇总
前端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 前言 最近两年许多大厂都在实行“降本增效”、“优化组织架构”,然后“为社会输送了大量人才”,今年(2023ÿ…...
Docker是什么?详谈它的框架、使用场景、优势
作者:Insist-- 个人主页:insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、什么是 Docker? 二、Docker 的架构 1、Docker客户端 2、Docker守护进程 3、Docker镜像 4、Docker容器 5、Docker…...
neo4j
UNWIND 将列表里的值展开 CREATE (N0:Person {name: Anders}) CREATE (N1:Person {name: Becky}) CREATE (N2:Person {name: Cesar}) CREATE (N3:Person {name: Dilshad}) CREATE (N4:Person {name: George}) CREATE (N5:Person {name: Filipa})CREATE (N0)-[:KNOWS]->(N3)…...
【项目 计网5】 4.15 TCP通信实现(服务器端)4.16 TCP通信实现(客户端)
文章目录 4.15 TCP通信实现(服务器端)4.16 TCP通信实现(客户端) 4.15 TCP通信实现(服务器端) // TCP 通信的服务器端// TCP 通信的服务器端 #include <stdio.h> #include <arpa/inet.h> #incl…...
windows可视化界面管理服务器上的env文件
需求:在 Windows 环境中通过可视化界面编辑位于 Linux 主机上的 env 文件的情况,我现在环境是windows环境,我的env文件在linux的192.168.20.124上,用户是op,密码是op,文件绝对路径是/home/op/compose/env …...
自然语言处理在智能客服和聊天机器人中的应用
文章目录 1. 引言2. NLP基础2.1 词法分析2.2 语法分析2.3 语义理解2.4 情感分析 3. 智能客服中的应用3.1 自动问答3.2 意图识别3.3 情感分析与情绪识别 4. 聊天机器人中的应用4.1 对话生成4.2 上下文理解 5. 技术原理与挑战5.1 语言模型5.2 数据质量和多样性5.3 上下文理解 6. …...
为什么不建议使用@Async注解创建线程
1 前言 在很久很久之前,我有一段痛苦的记忆。那种被故障所驱使的感觉,在我脑海里久久无法驱散。 原因无它,有小伙伴开启了线程池的暴力使用模式。没错,就是下面这篇文章。 夺命故障 ! 炸出了投资人! 我有必要简单的…...
更新Ubuntu18.04上的CUDA和GCC
问题: 有一台服务器的GPU是1080,有八张卡,已经好久没有人用了。cuda版本是10.1,我现在拿来复现一些论文的模型,经常遇到版本依赖问题,报错Driver is too old。所以要更新一下驱动。遇到的主要问题是gcc版本也太低了&am…...
算法通过村第6关【青铜】| 如何通过中序和后序遍历恢复二叉树
中序:3 4 8 6 7 5 2 1 10 9 11 15 13 14 12 后序:8 7 6 5 4 3 2 10 15 14 13 12 11 9 1 通过这两个遍历顺序恢复二叉树 首先我们知道中序遍历顺序左中右,后序遍历顺序左右中 第一步: 由后序遍历确定根结点为1 > 由中序遍历…...
高斯牛顿法和LM算法异同示例
LM(Levenberg-Marquardt)算法和高斯牛顿(Gauss-Newton)算法是两种用于非线性最小二乘问题的优化算法,它们也有一些相似之处: 迭代优化:LM算法和高斯牛顿算法都使用迭代的方式来优化参数值&#…...
奥威BI财务数据分析方案:只做老板想看的
奥威BI财务数据分析方案是一套从老板的视角出发,做老板想看的财务数据分析报表,帮助老板更好地了解公司的财务状况和经营绩效的综合性智能财务数据分析方案,可实现财务数据分析可视化、灵活自主性,随时为老板提供最为直观的财务数…...
opencv进阶19-基于opencv 决策树cv::ml::DTrees 实现demo示例
opencv 中创建决策树 cv::ml::DTrees类表示单个决策树或决策树集合,它是RTrees和 Boost的基类。 CART是二叉树,可用于分类或回归。对于分类,每个叶子节点都 标有类标签,多个叶子节点可能具有相同的标签。对于回归,每…...
Python地理空间数据处理技能库geoskills:简化GIS分析,提升开发效率
1. 项目概述:一个面向地理空间数据处理的技能库最近在GitHub上闲逛,发现了一个挺有意思的项目,叫geoskills,来自一个叫Cognitic-Labs的组织。光看名字,geo和skills的组合,就让我这个常年和数据打交道的人眼…...
aiomultiprocess 完全指南:突破 Python GIL 限制的终极并发解决方案
aiomultiprocess 完全指南:突破 Python GIL 限制的终极并发解决方案 【免费下载链接】aiomultiprocess Take a modern Python codebase to the next level of performance. 项目地址: https://gitcode.com/gh_mirrors/ai/aiomultiprocess 在 Python 编程世界…...
CANN/asc-devkit单核形状API文档
SetSingleShape 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…...
三菱FX3U串口通讯无协议编程与RS指令实现Modbus协议
引言 在工业自动化系统中,PLC与上位机之间的通讯至关重要。Modbus RTU协议 作为一种广泛应用的通讯协议,通常用于不同设备之间的数据交换。 对于三菱 FX3U系列PLC 来说,虽然它没有直接内置完整的Modbus RTU从站功能(早期型号需通过…...
Vivado 2023.1 与 Questasim 2024.1 协同仿真环境搭建全攻略
1. 环境准备:安装与版本确认 在开始搭建Vivado 2023.1与QuestaSim 2024.1的协同仿真环境前,首先要确保两个软件都已正确安装。我最近在搭建这个环境时发现,新版本对系统环境的要求比旧版本更严格。建议使用Windows 10 64位专业版或企业版&…...
别再只会用传统插值了!深入浅出图解DuDoNet双域网络,如何同时修复Sinogram和CT图像
双域网络革命:从DuDoNet到DuDoNet的医学影像伪影消除实战 医学影像领域长期被金属伪影问题困扰——当患者体内存在金属植入物时,CT扫描图像会出现辐射状条纹和带状阴影,严重影响诊断准确性。传统解决方案如同用创可贴处理内伤:图像…...
163MusicLyrics:免费音乐歌词提取终极指南,轻松获取网易云与QQ音乐歌词
163MusicLyrics:免费音乐歌词提取终极指南,轻松获取网易云与QQ音乐歌词 【免费下载链接】163MusicLyrics 云音乐歌词获取处理工具【网易云、QQ音乐】 项目地址: https://gitcode.com/GitHub_Trending/16/163MusicLyrics 还在为找不到准确的音乐歌…...
性价比好的深圳除甲醛公司
深圳作为高密度开发城市,常年保持稳定的新房交付、写字楼翻新与商铺装修需求,装修带来的甲醛残留问题,始终是业主和企业管理者关注的室内安全重点。目前深圳本地已有大量除甲醛服务机构,消费者可根据自身需求筛选适配的服务主体。…...
3种方法修复ROG游戏本色彩配置文件丢失问题:G-Helper实战指南
3种方法修复ROG游戏本色彩配置文件丢失问题:G-Helper实战指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenb…...
从SQL搬数据到智能分析:5级模型带你掌握数据分析AI Agent,收藏这份进阶指南!
本文介绍了数据分析AI Agent的概念及其与传统BI和ChatGPT的区别,提出了一个包含5个级别的成熟度模型来定位团队所处的阶段。文章重点解析了数据分析Agent的三层架构演进:Function Calling、ReAct模式和多Agent协作,并以电商实战案例展示了如何…...
