Python list comprehension (列表推导式 - 列表解析式 - 列表生成式)
Python list comprehension {列表推导式 - 列表解析式 - 列表生成式}
- 1. Python list comprehension (列表推导式 - 列表解析式 - 列表生成式)
- 2. Example
- 3. Example
- References
Python 中的列表解析式并不是用来解决全新的问题,只是为解决已有问题提供新的语法。
列表推导式的优点是相比于 for
循环更高效,因为列表推导式在执行时调用的是 Python 的底层 C 代码,而 for
循环则是用 Python 代码来执行。
1. Python list comprehension (列表推导式 - 列表解析式 - 列表生成式)
列表推导式的语法结构:
[]
定义列表的中括号。for
循环初步定义列表。- (可选) 在
for
循环后面可以使用if
语句进行过滤。 - 在
for
循环前的是列表的元素表达式,可以是任意的表达式。可以是for
循环中的元素本身,可以是元素进行运算后的结果,可以是元素组成的元组或者列表,可以是一个函数,甚至可以是另一个列表解析式 (嵌套列表解析式)。 - (可选) 在
for
循环后面可以再嵌套for
循环。
#!/usr/bin/env python
# -*- coding: utf-8 -*-from __future__ import absolute_import
from __future__ import division
from __future__ import print_functionlist_data = [i for i in range(10)]
square_data = [i ** 2 for i in range(10)]print(list_data)
print(square_data)
/usr/bin/python3.5 /home/strong/sunergy_moonergy_work/yongqiang.py
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]Process finished with exit code 0
列表解析让你只需编写一行代码就能生成列表。列表解析将 for
循环和创建新元素的代码合并成一行,并自动附加新元素。
使用列表解析创建平方数列表:
#!/usr/bin/env python3
# -*- coding:utf-8 -*-squares = [value ** 2 for value in range(1, 11)]print(squares)
要使用这种语法,首先指定一个描述性的列表名,例如 squares
。然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。表达式为 value ** 2
,它计算平方值。接下来,编写一个 for
循环,用于给表达式提供值,再加上右方括号。在这个示例中,for
循环为 for value in range(1, 11)
,它将值 1 ~ 10
提供给表达式 value ** 2
。
这里的 for
语句末尾没有冒号。
/usr/bin/python3.5 /home/strong/workspace/master.py
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]Process finished with exit code 0
The if
statement in list comprehension is optional. For every item
in list
, execute the expression
if
the condition is True
.
[expression for item in list if condition == True]
2. Example
#!/usr/bin/env python
# -*- coding: utf-8 -*-from __future__ import absolute_import
from __future__ import division
from __future__ import print_functionlist_data_1 = list(range(1, 11))
list_data_2 = list(range(10))square_data = [i * i for i in range(10)]
list_comprehension_a = [i * 2 for i in list_data_2]
list_comprehension_b = [x for x in list_data_2 if x >= 5]
list_comprehension_c = [(x, x * 2) for x in range(10)]
list_comprehension_d = [[x, x * 2] for x in range(10)]matrix_data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
list_comprehension_e = [num for row in matrix_data for num in row]list_comprehension_f = [n for n in list_data_2 if n % 2 == 1]print("list_data_1:", list_data_1)
print("list_data_2:", list_data_2)
print("square_data:", square_data)
print("list_comprehension_a:", list_comprehension_a)
print("list_comprehension_b:", list_comprehension_b)
print("list_comprehension_c:", list_comprehension_c)
print("list_comprehension_d:", list_comprehension_d)
print("list_comprehension_e:", list_comprehension_e)
print("list_comprehension_f:", list_comprehension_f)
/usr/bin/python3.5 /home/strong/sunergy_moonergy_work/yongqiang.py
list_data_1: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list_data_2: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
square_data: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
list_comprehension_a: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
list_comprehension_b: [5, 6, 7, 8, 9]
list_comprehension_c: [(0, 0), (1, 2), (2, 4), (3, 6), (4, 8), (5, 10), (6, 12), (7, 14), (8, 16), (9, 18)]
list_comprehension_d: [[0, 0], [1, 2], [2, 4], [3, 6], [4, 8], [5, 10], [6, 12], [7, 14], [8, 16], [9, 18]]
list_comprehension_e: [1, 2, 3, 4, 5, 6, 7, 8, 9]
list_comprehension_f: [1, 3, 5, 7, 9]Process finished with exit code 0
3. Example
#!/usr/bin/env python
# -*- coding: utf-8 -*-from __future__ import absolute_import
from __future__ import division
from __future__ import print_functionkeypoints = list(range(1, 76))
list_comprehension_keypoints = [keypoints[i:i + 3] for i in range(0, len(keypoints), 3)]print("keypoints:", keypoints)
print("list_comprehension_keypoints:", list_comprehension_keypoints)
/usr/bin/python3.5 /home/strong/sunergy_moonergy_work/yongqiang.py
keypoints: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75]
list_comprehension_keypoints: [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12], [13, 14, 15], [16, 17, 18], [19, 20, 21], [22, 23, 24], [25, 26, 27], [28, 29, 30], [31, 32, 33], [34, 35, 36], [37, 38, 39], [40, 41, 42], [43, 44, 45], [46, 47, 48], [49, 50, 51], [52, 53, 54], [55, 56, 57], [58, 59, 60], [61, 62, 63], [64, 65, 66], [67, 68, 69], [70, 71, 72], [73, 74, 75]]Process finished with exit code 0
References
[1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/
[2] (美) Eric Matthes (埃里克•马瑟斯) 著, 袁国忠 译. Python 编程:从入门到实践[M]. 北京:人民邮电出版社, 2016. 1-459
相关文章:
Python list comprehension (列表推导式 - 列表解析式 - 列表生成式)
Python list comprehension {列表推导式 - 列表解析式 - 列表生成式} 1. Python list comprehension (列表推导式 - 列表解析式 - 列表生成式)2. Example3. ExampleReferences Python 中的列表解析式并不是用来解决全新的问题,只是为解决已有问题提供新的语法。 列…...
2024年7月12日理发记录
上周五天气还算好,不太热,晚上下班打车回家后,将目的地设置成日常去的那个理发店。 下车走到门口,熟悉的托尼帅哥正在抽烟,他一眼看到了我,马上掐灭烟头,从怀里拿出口香糖,咀嚼起来&…...
几种常用排序算法
1 基本概念 排序是处理数据的一种最常见的操作,所谓排序就是将数据按某字段规律排列,所谓的字段就是数据节点的其中一个属性。比如一个班级的学生,其字段就有学号、姓名、班级、分数等等,我们既可以针对学号排序,也可…...
Spring3(代理模式 Spring1案例补充 Aop 面试题)
一、代理模式 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能,这种类型的设计模式属于结构型模式。 代理模式通过引入一个代理对象来控制对原对象的访问。代理对象在客户端和目标对象之间充当中介,负责将客户端…...
Github报错:Kex_exchange_identification: Connection closed by remote host
文章目录 1. 背景介绍2. 排查和解决方案 1. 背景介绍 Github提交或者拉取代码时,报错如下: Kex_exchange_identification: Connection closed by remote host fatal: Could not read from remote repository.Please make sure you have the correct ac…...
LabVIEW在CRIO中串口通讯数据异常问题
排查与解决步骤 检查硬件连接: 确保CRIO的串口模块正确连接,并且电缆无损坏。 确认串口模块在CRIO中被正确识别和配置。 验证串口配置: 在LabVIEW项目中,检查CRIO目标下的串口配置,确保波特率、数据位、停止位和校验…...
ALTERA芯片解密FPGA、CPLD、PLD芯片解密解密
Altera是世界一流的FPGA、CPLD和ASIC半导体生产商,所提供的解决方案与传统DSP、ASSP和ASIC解决方案相比,缩短了产品面市时间,提高了性能和效能,降低了系统成本。针对Altera芯片解密,益臻芯片解密中心经过多年的芯片解…...
[RK3588-Android12] 关于如何取消usb-typec的pd充电功能
问题描述 RK3588取消usb-typec的pd充电功能 解决方案: 在dts中fusb302节点下usb_con: connector子节点下添加如下熟悉: 打上如下2个补丁 diff --git a/drivers/usb/typec/tcpm/tcpm.c b/drivers/usb/typec/tcpm/tcpm.c index c8a4e57c9f9b..173f8cb7…...
分布式 I/O 系统 BL200 Modbus TCP 耦合器
BL200 耦合器是一个数据采集和控制系统,基于强大的 32 位微处理器设计,采用 Linux 操作系统,支持 Modbus 协议,可以快速接入现场 PLC、SCADA 以及 ERP 系统, 内置逻辑控制、边缘计算应用,适用于 IIoT 和工业…...
Java面试题--JVM大厂篇之Serial GC在JVM中有哪些优点和局限性
目录 引言: 正文: 一、Serial GC概述 二、Serial GC的优点 三、Serial GC的局限性 结束语: 引言: 在Java虚拟机(JVM)中,垃圾收集器(Garbage Collector, GC)是关键组件之一,负责自动管理内…...
【人工智能】机器学习 -- 贝叶斯分类器
目录 一、使用Python开发工具,运行对iris数据进行分类的例子程序NaiveBayes.py,熟悉sklearn机器实习开源库。 1. NaiveBayes.py 2. 运行结果 二、登录https://archive-beta.ics.uci.edu/ 三、使用sklearn机器学习开源库,使用贝叶斯分类器…...
深入理解 React 的 useSyncExternalStore Hook
深入理解 React 的 useSyncExternalStore Hook 大家好,今天我们来聊聊 React 18 引入的一个新 Hook:useSyncExternalStore。这个 Hook 主要用于与外部存储同步状态,特别是在需要确保状态一致性的场景下非常有用。本文将深入探讨这个 Hook 的…...
河南萌新联赛2024第(一)场:河南农业大学
C-有大家喜欢的零食吗_河南萌新联赛2024第(一)场:河南农业大学 (nowcoder.com) 思路:匈牙利算法的板子题. 二部图 int n; vector<int> vct[505]; int match[505],vis[505]; bool dfs(int s){for(auto v:vct[s]){if(vis[v]) continue;…...
K8S 上部署 Emqx
文章目录 安装方式一:1. 快速部署一个简单的 EMQX 集群:2. 部署一个持久化的 EMQX 集群:3. 部署 EMQX Edge 集群和 EMQX 企业版集群: 安装方式二:定制化部署1. 使用 Pod 直接部署 EMQX Broker2. 使用 Deoloyment 部署 …...
[React]利用Webcomponent封装React组件
[React]利用Webcomponent封装React组件 为什么这么做 我个人认为,最重要的点是可以很方便地跨框架挂载和卸载wc元素(至少我在项目里是这么玩的),此外,基于wc的css沙箱以及它的shadowRoot机制,可以提供一套…...
Linux C服务需要在A服务和B服务都启动成功后才能启动
需求 C服务需要在A服务和B服务都启动成功后才能启动 服务编号服务名服务Anginx.service服务Bmashang.service服务Credis.service 实验 如果您想要 redis.service 在 nginx.service 和 mashang.service 都成功启动后才能启动,那么需要在 redis.service 的服务单元…...
VSCODE 下 openocd Jlink 的配置笔记
title: VSCODE 下 openocd Jlink 的配置笔记 tags: STM32HalCubemax 文章目录 内容VSCODE 下 openocd Jlink 的配置笔记安装完成后修改jlink的配置文件然后修改你的下载器为jlink烧录你的项目绝对会出现下面的问题那么打开下载的第一个软件 (点到这个jlink右键&…...
JVM--HostSpot算法细节实现
1.根节点枚举 定义: 我们以可达性分析算法中从GC Roots 集合找引用链这个操作作为介绍虚拟机高效实现的第一个例 子。固定可作为GC Roots 的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如 栈帧中的本地变量表&a…...
【Unity实战100例】Unity声音可视化多种显示效果
目录 一、技术背景 二、界面搭建 三、 实现 UIAudioVisualizer 基类 四、实现 AudioSampler 类 五、实现 IAudioSample 接口 六、实现MusicAudioVisualizer 七、实现 MicrophoneAudioManager 类 八、实现 MicrophoneAudioVisualizer 类 九、源码下载 Unity声音可视化四…...
[Cesium for Supermap] 加载3dTiles,点击获取属性
代码: // 设为椭球var obj [6378137.0, 6378137.0, 6356752.3142451793];Cesium.Ellipsoid.WGS84 Object.freeze(new Cesium.Ellipsoid(obj[0], obj[1], obj[2]));var viewer new Cesium.Viewer(cesiumContainer);var scene viewer.scenescene.lightSource.ambi…...
【stm32项目】基于stm32智能宠物喂养(完整工程资料源码)
基于STM32宠物喂养系统 前言: 随着人们生活幸福指数的提高,越来越多的家庭选择养宠物来为生活增添乐趣。然而,由于工作等原因,许多主人无法及时为宠物提供充足的食物与水。为了解决这一问题,我设计了一款便捷的宠物喂…...
选择Maya进行3D动画制作与渲染的理由
如果你对3D动画充满热情并追求成为专业3D动画师的梦想,你一定听说过Maya——近年来3D动画的行业标准。Maya被3D艺术家广泛使用,你是否想知道为什么Maya总是他们的首选?下面一起来了解下。 一、什么是Maya? 由Autodesk开发的Maya是…...
Promise应用
创建一个 Promise 对象 let promise showLabelText() {return new Promise((resolve, reject) > {axios({method: "post",url: "/code/expose/interface/queryActionPlan",data: { situationOneId: 19999, labels: [1, 2, 3] }}).then(response > {…...
51单片机嵌入式开发:13、STC89C52RC 之 RS232与电脑通讯
STC89C52RC 之 RS232与电脑通讯 第十三节课,RS232与电脑通讯1 概述2 Uart介绍2.1 概述2.2 STC89C52UART介绍2.3 STC89C52 UART寄存器介绍2.4 STC89C52 UART操作 3 C51 UART总结 第十三节课,RS232与电脑通讯 1 概述 RS232(Recommended Stand…...
当代政治制度(练习题)
当代政治制度(练习题) Rz整理 仅供参考 干部鉴定必须坚持德才兼备原则,考核内容包括(A.德 B.廉 C.能 D.勤 F.绩 ) A.德 B.廉 C.能 D.勤 E.信 F.绩我国干部任用的方式主要包括(A.考任 C.委任 D.聘任 F.选任…...
前端pc和小程序接入快递100(跳转方式和api方式)====实时查询接口
文章目录 跳转方式微信小程序(我以uniapp为例)pc api接入说明关于签名计算成功示例 跳转方式 没有任何开发成本,直接一键接入 可以直接看官方文档 https://www.kuaidi100.com/openapi/api_wxmp.shtml 微信小程序(我以uniapp为例…...
电脑永久性不小心删除了东西还可以恢复吗 电脑提示永久性删除文件怎么找回 怎么恢复电脑永久删除的数据
永久删除电脑数据的操作,对于很多常用电脑设备的用户来说,可以说时有发生!但是,因为这些情况大都发生在不经意间,所以每每让广大用户感觉到十分苦恼。永久删除也有后悔药,轻松找回电脑中误删的文件。恢复文…...
LeetCode热题100刷题16:74. 搜索二维矩阵、33. 搜索旋转排序数组、153. 寻找旋转排序数组中的最小值、98. 验证二叉搜索树
74. 搜索二维矩阵 class Solution { public:bool searchMatrix(vector<vector<int>>& matrix, int target) {int row matrix.size();int col matrix[0].size();for(int i0;i<row;i) {//先排除一下不存在的情况if(i>0&&matrix[i][0]>target…...
C++仿函数
在C中,我们经常需要对类中的元素进行比较,例如在排序、查找等操作中。为了使类更加灵活,我们可以通过自定义比较函数来实现不同的比较方式。在本文中,我们将探讨如何在类中使用仿函数和 Lambda 表达式来定义自定义比较函数。 1. …...
文献阅读:tidyomics 生态系统:增强组学数据分析
文献介绍 文献题目: The tidyomics ecosystem: enhancing omic data analyses 研究团队: Stefano Mangiola(澳大利亚沃尔特和伊丽莎霍尔医学研究所)、Michael I. Love(美国北卡罗来纳大学教堂山分校)、Ant…...
药检局信息化网站系统建设方案/新闻最新消息
本节课演示如何以动画的方式,显示或隐藏指定的位图,该功能在日常的开发工作里还是挺常见的。 首先添加一个布尔属性,标识是否显示或隐藏指定的视图。 添加另一个字符串属性,作为和密码输入框进行绑定的状态属性。 添加一个VStack视图,作为子视图的容器。 然后添加一个…...
网站建设费用构成/如何宣传自己的网站
1、why: 为啥学NDK开发,其实是为了项目需要调用底层的一些C/C的一些东西;另外就是为了效率更加高些;Android ndk 提供 了 opengls2、what 是什么The NDK is a toolset that allows you to implement parts of your app using nati…...
互联网软件外包平台/湖南专业seo优化
redis的底层数据结构1. redis底层用了什么数据结构1.1 示例一:String类型1.2 示例二: List类型2. 五种数据类型底层用了什么数据结构2.1 String(SDS)2.2 List(linkedlist、ziplist)2.3 hash(hashtable、ziplist &#…...
pytson做网站安全吗/seo外链工具
一、昨天干了什么? 对我们最后要发布的版本不断修复,将软件发布到蒲公英开放平台,集成蒲公英SDK,新增摇一摇反馈的功能和版本更新功能。 二、今天准备做什么? 向同学们宣传我们的软件,然后给我们提供反馈&a…...
鸿兴网站建设公司/网络营销手段有哪四种
在python中,异常捕捉常用的方法是try…except…方法,其中如果在try…except方法中使用了else以及finally后,异常捕捉的执行逻辑会存在差异1.try/except使用,执行顺序def func():i 0try:i 1print(执行try中逻辑)j i / 0except E…...
楚雄市建设规划批前公示在那个网站/seo网络推广知识
伴随着C的学习历程,我们会发现C就像一个雷区,在雷区里面行走需要注意雷的分布和战斗力,今天我们来认识的是C中比较不受重视的一个雷,叫做友元,战斗力十分生猛,友元的存在一定程度上破坏了C的结构稳定性即封…...