Python12 列表推导式

图片

1.什么是列表推导式

Python的列表推导式(list comprehension)是一种简洁的构建列表(list)的方法,它可以从一个现有的列表中根据某种指定的规则快速创建一个新列表。这种方法不仅代码更加简洁,执行效率也很高。

列表推导式通常包括以下几个部分:

  1. 输出表达式:新列表中的元素,可以是简单的元素,也可以是应用了某种操作的结果。

  2. 迭代变量:在原始列表中进行迭代的变量。

  3. 可迭代对象:原始数据集合,可以是列表、集合、序列等。

  4. 可选的条件表达式:用于筛选符合条件的元素。

列表推导式的基本语法如下:

[expression for item in iterable if condition]

这里的 expression 是对 item 的操作,iterable 是被迭代处理的数据集,而 if condition 是一个可选的条件语句,用来过滤那些不符合条件的元素。

列表推导式不仅限于简单的操作,还可以包括复杂的表达式和多层循环,极大地提高了代码的灵活性和可读性。

2.列表推导式应用实例

1)生成平方列表

示例代码1:

# 1平方列表的一般实现
squares=[]
for x in range(10):squares.append(x**2)
squares

示例代码2:

# 平方列表的列表推导式方式实现
squares=[x**2 for x in range(10)]
squares

示例代码3:

# 生成包含嵌套列表元素平方的新列表
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
squared_elements = [x**2 for row in matrix for x in row]
squared_elements

上面三个示例代码生成的列表完全一样。

运行结果:

图片

2)整除3的整数列表

示例代码1:

# 2整除3的整数
# 一般方法
numbers=[]  # 初始化空列表
for x in range(60):  #[0, 59]if x%3 ==0:  # 如果x除3余数为0,就添加到numbers列表numbers.append(x)  
numbers

示例代码2:

# 列表推导式方法
numbers=[x for x in range(60) if x%3==0]
numbers

运行结果:

图片

3)获取文件列表

示例代码1:

# 获取文件列表
import os
files=[]
for f in os.listdir(r'F:\桌面\python100\files\lyric'):if f.endswith('.txt'):files.append(f)
files

示例代码2:

# 列表推导式方法
files=[f for f in os.listdir(os.path.abspath(r'F:\桌面\python100\files\lyric')) if f.endswith('.txt')]
files

运行结果:

图片

4)查找两个列表中的公共元素

示例代码:

a = [1, 2, 3, 4, 5, 6]
b = [4, 5, 6, 7, 8, 9]
common_elements = [x for x in a if x in b]
common_elements

运行结果:

图片

5)从句子中提取长度大于3的单词并转换为大写形式

示例代码:

sentence = "Hello there, this is an example to extract long words."
long_words_upper = [word.upper() for word in sentence.split() if len(word) > 3]
long_words_upper

运行结果:

图片

6)包含原列表中元素除以2后向下取整的结果列表

示例代码:

numbers = [10, 23, 45, 78, 96]
halved_and_floored = [x // 2 for x in numbers]
halved_and_floored

运行结果:

图片

7)从元组的列表中提取满足特定条件的元组

示例代码:

students = [("Alice", 55), ("Bob", 85), ("Cindy", 72), ("David", 43)]
passed_students = [student for student in students if student[1] > 60]
passed_students

运行结果:

图片

8)根据条件构造新的字符串列表

示例代码:

cities = ["New York", "Tokyo", "Paris", "Munich", "Sydney"]
upper_long_cities = [city.upper() for city in cities if len(city) > 5]
upper_long_cities 

运行结果:

图片

9)结合多个条件过滤列表中的元素

示例代码:

numbers = [3, 12, 19, 8, 15, 24, 5]
filtered_numbers = [num for num in numbers if num % 2 == 0 and num > 10]
filtered_numbers

运行结果:

图片


以上内容总结自网络,如有帮助欢迎转发,我们下次再见!

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

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

相关文章

iOS 17.6养老版发布,旧机必升?

iOS 17.6 的第一个开发者测试版已发布,另外还发布了macOS 14.6、watchOS 10.6、iPadOS 17.6 等。 苹果iOS系统更新一直是科技爱好者和用户关注的焦点,尤其是在iOS18的测试阶段,其吸引力尤为显著。尽管苹果同时推送了iOS17.6 Beta1&#xff0c…

kimi+的+能为论文写作+出什么?我帮你试过了!

学境思源,一键生成论文初稿: AcademicIdeas - 学境思源AI论文写作 Kimi是月之暗面科技有限公司开发的个性化智能助手功能。相比kimi,Kimi能够提供个性化定制服务,根据用户特定需求提供更专业深入的辅助,实现一对一的智…

多线程(总结黑马程序员)

一、什么是线程? 是一个程序内部的一条执行流程 多线程是什么? 多条线程由CPU负责调度执行 多线程的创建方式一:继承Thread类 //1.继承Thread类 public class MyThread extends Thread {//2.必须重写run方法Overridepublic void run() {…

【数据结构】【版本1.3】【线性时代】——栈

快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、栈的概念二、栈的模拟实现2.1 定义2.2 初始化2.3 销毁2.4 压栈2.5 判空2.6 出栈2.7 获取栈顶元素2.8…

RAG优化技巧|7大挑战与解決方式|提高你的LLM能力

在当今快速发展的人工智能领域,大型语言模型(LLM)已经成为无处不在的技术,它们不仅改变了我们与机器交流的方式,还在各行各业中发挥着革命性的影响。 然而,尽管LLM RAG的能力已经让人惊叹,但我…

浅谈配置元件之JDBC连接配置

浅谈配置元件之JDBC连接配置 通过使用“JDBC连接配置”配置元件(JDBC Connection Configuration),您可以轻松地在JMeter测试计划中集成数据库交互能力。本指南将详细介绍如何设置和使用此配置元件来连接数据库并执行SQL查询。 1. 准备工作 …

微服务架构:解构现代应用程序的未来

目录 前言1. 微服务架构的基本概念1.1 什么是微服务架构1.2 微服务与单体架构的对比 2. 微服务架构的优势2.1 灵活性与可扩展性2.2 持续交付与部署2.3 技术多样性2.4 故障隔离 3. 微服务架构的挑战3.1 服务间通信和数据一致性3.2 运维复杂度3.3 安全性3.4 开发团队的协作 4. 微…

手机铃声下载2个必备技巧,定制化铃声,彰显个性魅力

手机铃声,就像是独特的信号灯,不仅仅是通知我们来电或信息的方式,更是展现个人品位和魅力的武器。手机铃声下载和定制,让你的手机从千万舰队中脱颖而出。在接下来的文章中,我们将详细探讨铃声下载技巧的具体操作步骤&a…

2024人工智能指数报告(二):技术性能

背景 从2017年开始,斯坦福大学人工智能研究所(HAI)每年都会发布一份人工智能的研究报告,人工智能指数报告(AII),对上一年人工智能相关的数据进行跟踪、整理、提炼并进行可视化。这份指数报告被认…

深度学习1 -- 开头

一 前言 感觉用这玩意越来越多,所以想学学。不过没想好怎么学,也没有提纲,买了两本书,一本是深度学习入门,小日子写的。还有一本就是花书。还有就是回Gatech参加线上课程,CS7643。 CS 7643: Deep Learnin…

【stm32-新建工程-寄存器版本】

stm32-新建工程-寄存器版本 ■ 下载相关STM32Cube官方固件包(F1,F4,F7,H7)■ 1. ST官方搜索STM32Cube■ 2. 搜索 STM32Cube■ 3. 点击获取软件■ 4. 选择对应的版本下载■ 5. 输入账号信息■ 6. 出现下载弹框&#xff…

推荐 2 个 牛哔哄哄 的 GitHub 项目

推荐两个开源的 GitHub 项目,一个基于大模型的企业级知识库问答系统,支持管理企业知识库、对话问答、RAG 等功能。 另外一个是计算机视觉的工具箱,使用它你可以在你电脑上实现人体跟踪、分割、检测等一系列计算机视觉的场景。 01 基于 LLM 大…

【unity笔记】二、海洋系统Crest Ocean System插件使用

一、介绍 Crest 是 Unity 技术先进的海洋系统。 它专为性能而设计,并大量使用细节级别 (LOD) 策略和 GPU 加速来实现快速更新和渲染。它还具有高度的灵活性,允许对水形状/泡沫/动态波浪/等进行任何自定义输入,并具有直…

01 基础入门 编写你的第一个 Go 语言程序

从这节课开始,我会带你走进 Go 语言的世界。我会用通俗易懂的语言,介绍 Go 语言的各个知识点,让你可以从零开始逐步学习,再深入它的世界。不管你以前是否接触过 Go 语言,都可以从这个专栏中受益。 现在,让…

时隔一年,SSD大涨价?

同样产品,2T,去年400多到手,今年700。 去年 今年

3ds Max软件下载安装:3D建模软件 轻松开启你的建模之旅!

3ds Max,在建模过程中,网格建模和NURBS建模两大技术发挥着不可或缺的作用。网格建模允许用户通过顶点、边和面等元素的调整,精确地塑造出模型的形态;而NURBS建模则以其优秀的曲线和曲面处理能力,为设计师们提供了更为平…

迅为RK3568驱动教程第十八期-PWM

系统性PWM课程,完全掌握PWM。采用框架学习法,从基础知识、PWM子系统框架、API函数理论由面到点,逐个击破。通过SG90舵机,呼吸灯的控制把理论转为动手能力。最后从零实现输入捕获驱动程序,深入探究,体验一把…

《人工智能导论》书面作业

第 1 章:绪论 1、分别解释人工智能的三个主要学派的代表人物和主要思想,并给出每个学派的一个实际应用实例。 符号主义(Symbolists 或 逻辑主义): 代表人物:马文闵斯基(Marvin Minsky&#xf…

人工智能大模型之开源大语言模型汇总(国内外开源项目模型汇总)

开源大语言模型完整列表 Large Language Model (LLM) 即大规模语言模型,是一种基于深度学习的自然语言处理模型,它能够学习到自然语言的语法和语义,从而可以生成人类可读的文本。 所谓"语言模型",就是只用来处理语言文…

一文带你理清同源和跨域

1、概述 前后端数据交互经常会碰到请求跨域,什么是跨域,为什么需要跨域,以及常用有哪几种跨域方式,这是本文要探讨的内容。 同源策略(英文全称 Same origin policy)是浏览器提供的一个安全功能。同源策略限制了从同一个源加载的…