通过示例学习Python列表推导

【Python入门】5大Python列表推导式技巧:你真的掌握了吗? 列表推导式(List Comprehension)是一种简洁的创建列表的方法,可以在一行代码中完成复杂的列表生成操作。定义:基本列表推导式用于生成新的列表,通常包含一个表达式和一个迭代变量。作用:基本列表推导式可以快速生成新的列表,适用于各种数据处理操作。定义:带条件的列表推导式在生成新列表时,只包含满足特定条件的元素。作用:带条件的列表推导式可以快速过滤数据,生成满足条件的新列表。定义:嵌套列表推导式在生成新列表时,包含多层循环。作用:嵌套列表推导式可以处理多维数据,生成扁平化的列表。定义。 阅读详情

1 平方列表

如果你想创建一个包含1到10的平方的列表,你可以这样做:

这是一个简单的例子,但是使用列表生成式可以更简洁地创建这个列表。

这个最简单的列表生成式由方括号开始,方括号内部先是一个表达式,其后跟着一个for语句。列表生成式总是返回一个列表。

2 整除3的数字列表

通常,你可能这样写:

你可以在列表生成式里包含一个if语句,来有条件地为列表添加项。为了创建一个包含0到100间能被3整除的数字列表,可以使用列表推导式:

3 找出质数

这通常要使用好几行代码来实现。

不过,你可以使用两个列表生成式来简化代码。

第一行代码在一个列表生成式里使用了多层for循环。第一个循环是外部循环,第二个循环是是内部循环。为了找到质数,我们首先找到一个非质数的列表。通过找出2-7的倍数来产生这个非质数列表。然后我们循环遍历数字并查看每个数字是否在非质数列表。

修正:正如reddit上的shoyer指出的,使用集合(set)来查找noprimes(代码里的属性参数,译者注)效率更高。由于noprimes应该只包含唯一的值,并且我们频繁地去检查一个值是否存在,所以我们应该使用集合。集合的使用语法和列表的使用语法类似,所以我们可以这样使用:

4 嵌套列表降维

假设你有一个列表的列表(列表里包含列表)或者一个矩阵,

并且你想把它降维到一个一维列表。你可以这样做:

使用列表生成式:

这使用了两个for循环去迭代整个矩阵。外层(第一个)循环按行迭代,内部(第二个)循环对该行的每个项进行迭代。

5 模拟多个掷硬币事件

假设需要模拟多次掷硬币事件,其中0表示正面,1表示反面,你可以这样编写代码:

或者使用列表生成式使代码更简洁:

这里使用了range函数循环了10次。每一次我们都把random()的输出进行四舍五入。因为random()函数返回一个0到1的浮点数,所以对输出进行四舍五入就会返回0或者1。Round()函数返回一个浮点型数据,使用int()将其转为整型并添加到列表里。

6 移除句子中的元音字母

假设你有一个句子,

并且你想移除所有的元音字母。我们可以使用几行代码轻易做到:

或者你可以使用列表生成式简化它:

这个例子使用列表生成式创建一个字母列表,字母列表的字母来自sentence句子的非元音字母。然后我们把生成的列表传给join()函数去转换为字符串。

修正:正如reddit上的iamadogwhatisthis提出的,这个例子不需要列表生成式。使用生成器(generator)更好:

注意,这里去掉了方括号。这是因为join函数接收任意可迭代的数据,包括列表或者生成器。这个没有方括号的语法使用了生成器。这产生(与列表生成式)同样的结果,相对于之前把所有条目包装成一个列表,生成器在我们遍历时才产生相应的条目。这可以使我们不必保存整个列表到内存,并且这对于处理大量数据更有效率。

 7 获取目录里的文件名列表

下面的代码将会遍历my_dir目录下的文件,并在files里追加每个以txt为后缀的文件名。

这同样可以使用列表生成式简化代码:

或者你可以获取一个相对路径的列表:

感谢reddit上的rasbt提供。

8 将csv文件读取为字典列表

我们常常需要读取和处理csv文件的数据。处理csv数据的一个最有用的方法就是把它转换为一个字典列表。

你可以使用列表生成式快速实现:

DictReader类将会自动地使用csv文件的第一行作为字典的key属性名。DictReader类返回一个将会遍历csv文件所有行的对象。这个文件对象通过open()函数产生。我们提供了open()两个参数–第一个是csv文件名,第二个是模式。在这例子,‘rU’有两个意思。想往常一样,‘r’表示以读模式打开文件。‘U’表明我们将会接受通用换行符–‘n’,‘r’和‘rn’。

感谢reddit上的blacwidonsfw提供。

1 赞 4 收藏 评论

关于作者:周进林

茫茫大海中的一枚程序猿,为了进化为一个高富帅人类而努力着。关注java、python、linux、vim等(新浪微博:@酒肉和尚–进林) 个人主页 · 我的文章 · 19 ·  



redhawk:avgTW maxTW minTW minWC的区别 分析dynamic ir drop报告时会遇到这几个值,avgTW maxTW minTW minWC,如下图。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 阅读详情

相关推荐

多租户Saas架构设计分析(基础篇)

本篇先给大家介绍一下相关的概念和常见问题。 实践篇链接:https://blog.youkuaiyun.com/haponchang/article/details/104246317 SaaS简介 SaaS是Software-as-a-Service(软件即服务)的简称,“软件即服务”?是不是有点拗口?其实你就理解成为“按需租用别人提供的软件服务”就可以了,它是一种软件交付模式。...

haponchang的博客 1万+

Python推导式尝试学习

列表生成式(list comprehension)是一种简化代码的优美方法。根据python文档,“列表生成式提供了一种创建列表的简洁方法。”在这篇教程里,我将会使用一些例子来展示如果使用列表推导式。列表推导式 列表推导式书写形式:   [expr for value in collection ifcondition] 1 平方列表如果你想创建一个包含1到10的平方的列表,你可以这样

Losileeya 1369

域自适应的理解与想法(Domain Adaptation)

这幅图是域适应非常有名的一篇论文中的插图,被很多文章转载。 什么是领域自适应? Domain Adaptation是迁移学习中很重要的一部分内容,目的是把分布不同的源域和目标域的数据,映射到一个特征空间中,使其在该空间中的距离尽可能近。于是在特征空间中对source domain训练的目标函数,就可以迁移到target domain上,提高target domain上的准确率。 上面的图主要的思想来源于GAN,上图由三部分组成:特征映射网络 标签分类网络和和域判别网络 其中,source domain的数.

yuanxue18的博客 5982

Python推导式练习题

推导式_练习题: 1.应用列表推导式,构建一个列表 (1)[0, 2, 4, 6, 8, 10, 12, 14, 16, 18] res = [2 * i for i in range(10)] print(res) (2)[(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6)] res = [(i, i+1) for i in range(6) ] print(res) (3)产生一个公差为11的等差数列 res = [11*i + 1 for i in ran

hacker008_的博客 2241

用workbuddy自定义Skill:手把手搭建AI炒股分析助手

AI Agent正成为个人投资研究的重要工具,而Skill作为行为规范,能让AI输出保持稳定与专业。在AI Agent应用中,很多人分不清Skill与Agent的区别:Agent负责目标拆解与执行,Skill则固化分析流程与输出模板。借助本地工作台workbuddy,用户可自定义Skill,实现从市场环境检查到财务排雷的五段式分析。通过调低温度参数、设定数据验证规则,该方案能有效避免大模型凭空编造数据,帮助个人投资者快速完成基本面体检、资金面观察与风险清单生成。本文基于一套可直接套用的配置与一个月实测,展示

weixin_29038537的博客 520

深度学习的unfold操作

对于彩色图像这样的三维数据,unfold操作会对每个通道分别进行上述的二维展开操作。例如,一个 RGB 图像,在对其进行unfold操作时,红色通道、绿色通道和蓝色通道的数据都会被独立地按照定义的窗口和步长展开,然后将这些展开后的通道数据按照原来的通道顺序组合在一起,形成新的张量。与我们熟悉的卷积类似,unfold也是使用一个特定大小的窗口和步长自左至右、自上至下滑动,不同的是,卷是滑动后与核求乘积(所以取名为卷积),而unfold滑动后不求乘积,是将窗口内的数据展开。

xulibo5828的博客 2166

Python 装饰器 - 推导式(列表推导式) - 迭代器 - 生成器 - 闭包

闭包是在函数内部定义的函数,它可以访问其外部函数的变量,即使外部函数已经执行完毕并且其作用域不再存在。这种机制允许变量的状态在函数调用之间得以保留。

lpfstudy的博客 762

IC设计新手必看:如何正确使用去耦电容(decap)避免电源噪声?

本文深入探讨了IC设计中去耦电容(decap)的应用技巧,从核心原理到布局实现,帮助新手工程师有效抑制电源噪声。文章详细解析了MIM、MOM等电容类型的特性与选择策略,并提供了先进的布局技巧和验证方法,特别适用于28nm以下先进工艺的电路设计挑战。

weixin_30555125的博客 114

强大的python列表生成式(推导式)

至于这行代码我们要去怎么理解呢,可以看见的是,i**2后面就是一个正常的for循环,而前面i**2就是for循环里面的执行的语句,最后再用一个中括号[]包起来就是一个列表生成式啦,是不是很简单!问题四:我们拿到问题三中生成的列表,判断里面的元素是否是三的倍数,是的话返回True,否则返回False(最终的形式不变,就里面的数字变成了True or False)刚听到这个问题时,你的第一反应是不是用for循环,如果是的话,那么我推荐一下今天介绍的列表生成式。欧克,进阶,进阶,进阶!最后一个问题喽,好好想想。

qq_59679944的博客 1414

手把手教你学基带SOC芯片(4.2)--基带soc芯片的存储器设计

基带 SoC 中的存储器设计需要综合考虑功耗、成本和性能等因素。SRAM 适合高速缓存,DRAM 适合主内存,Flash 存储器适合非易失性存储。通过优化存储单元设计、阵列布局和外围电路,可以提高存储器的性能和效率。

MHD0815的博客 350

深度学习笔记——前向传播与反向传播、神经网络(前馈神经网络与反馈神经网络)、常见算法概要汇总

本文简要介绍深度学习的前向传播与反向传播,以及前馈神经网络与反馈神经网络。

haopinglianlian的博客 3042

列表推导式等

目录列表推导式生成器 列表推导式 # 列表推导式.py """ 语法 [表达式 for 变量 in 旧列表] [表达式 for 变量 in 旧列表 if 条件] """ # 求1--100之间能被3整除的数 list1 = [i * 2 for i in range(1, 100) if i % 3 == 0] list2 = [i for i in range(1, 100) if (i % 3 == 0 and i % 5 == 0)] print(list1) print(list2) 生成器 生

bjtusy的博客 536

ITKMontage---ITK自动拼接模块

本文分享ITK中Remote中的ITKMontage拼接模块,希望对各位小伙伴有所帮助!1. ITKMontage介绍在医疗图像处理过程中,图像拼接有很多用处,比如DR图像的拼接。ITKMontage可以快速稳定的处理数据量较大的拼接图像。强度不均匀性校正配准全局优化融合2. ITKMontage安装ITKMontageITKMontage可脱离ITK进行单独安装,也可在ITK安装时作为模块进行安装。单独安装ITK模块安装在ITK编译时,选择ITKMontage模块。

qq_40041064的博客 450

python:从列表中创建元组列表

例如,在机器学习和深度学习任务中,输出可能是一个包含多个向量的矩阵,我们可能需要将其转换成每个向量作为一个元组存储在列表中的形式。例如,假设我们有一个二维数组`matrix = [[1, 2], [3, 4]]`,我们可以将其转换为`[(1, 2), (3, 4)]`。print(result) # 输出: [(1, 2), (3, 4), (5, 6)]print(result) # 输出: [(1, 2), (3, 4), (5, 6)]python:从列表中创建元组列表。

445

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

25个惊艳的Python代码写法

Python可以用于复杂的数据分析和Web开发项目,还能以极少的代码行数完成令人惊叹的任务。本文将分享25个简短的Python代码示例,用来展示Python编程语言的魅力和效率。

weixin_72959097的博客 2868

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Python小姿势 - Python中的列表推导式

《100天精通Python》专栏,最详细的Python入门到精通教程;理论篇基础知识讲解构建体系框架、实践篇Python黑科技学以致用。https://blog.youkuaiyun.com/weixin_39032019/category_12263598.html

独木不成林,单弦不成音。 2653

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python高效编程必备技巧:列表推导式全解析

Python高效编程必备技巧:列表推导式全解析

devid008的博客 490

python用列表推导式_python 列表推导式使用详解

所谓的列表推导式,就是指的轻量级循环创建列表。基本使用方式# 创建一个0-10的列表a = [x for x in range(11)]print(a)"""输出结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]"""上面的列表推导式等价于下面,只是代码非常简化。a = []for x in range(10):a.append(x)在循环的过程中使用if# 创建一个1-10之间偶...

weixin_39660931的博客 869

对列表中的所有元素进行平方

关于人工智能大模型的应用,我们可以将列表中的每个元素输入到一个预训练的深度学习模型中,然后得到模型的预测结果。例如,如果我们有一个包含图片的列表,我们可以在循环中为每张图片创建一个Tensor,并将其输入到卷积神经网络(CNN)中。应用场景:在图像识别和机器学习领域,将列表中的每个元素作为输入进行处理是一种常见的方式。在数学中,将一个数乘以其自身得到一个新的值,这个新的值为原数的平方。# 对于每个元素,我们计算它的平方(x**2),并将结果添加到新列表中。1. 创建一个空列表,用于存储平方后的结果。

486

【python基础教程】推导式的基本使用

一个简单的功能,写的代码倒是不少。如果使用了列表推导式,那就简洁多了,而且代码还变得更加易读了。当列表推导式还需要满足某条件下才输出表达式时,可以通过以下语法实现💡举个栗子💡将li列表中小于0的元素平方并保存到新列表中循环嵌套推导式💡举个栗子💡生成列表li为[‘1a’,‘1b’,‘1c’,‘2a’,‘2b’,‘2c’,‘3a’,‘3b’,‘3c’]字典推导式💡举个栗子💡生成字典字典的key值为列表li的元素索引字典的value值为列表的元素并且字典推导式可以快速将字典中的k,v互换。

2401_84009300的博客 331

推导式

推导式 """ 作用:化简代码 目录: 列表推导式 字典推导式 集合推导式 """ 一. 列表推导式 """ 作用:用一个表达式创建一个有规律的列表或控制一个有规律列表。 列表推导式又叫列表生成式。 """ 1.1 创建一个0-10的列表 while循环实现 # 1. 准备一个空列表 list1 = [] # 2. 书写循环,依次追加数字到空列表list1中 ...

lsssssssssssy的博客 305

自动化测试进阶之Python推导式的使用

Python推导式是一种简洁的数据构建方式,包括列表、集合、字典和生成器推导式。其优点包括代码简洁、可读性强、执行效率高、内置过滤功能、灵活通用、易于嵌套以及支持动态数据生成(生成器推导式)。具体类型有:列表推导式([x**2 for x in range(10)])、集合推导式(自动去重)、字典推导式(键值对转换)和生成器推导式(惰性计算)。虽然推导式高效便捷,但复杂时应考虑拆分或传统循环,大数据量时建议使用生成器推导式节省内存。合理使用推导式能显著提升代码质量和开发效率。

nhb000000的博客 695

10个Python常用编程技巧及示例详解

这些Python技巧涵盖了从基础操作到高级功能的方方面面,能够极大提高编程效率和代码简洁度.无论是初学者还是资深开发者,掌握这些技巧都能帮助你写出更加优雅和高效的代码。

Candyz7的博客 1050

python将一个列表的数据复制到另一个列表中。

将一个列表的数据复制到另一个列表中。【开发该软件的操作系统】:windows10 【软件开发环境/开发工具】:PyCharm 【编程语言】:Python 【开发目的】:这是老师布置的作业啦~ 供初学者参考学习 【开发者】:江西农业大学2020级大二学生

当路danglu0010 5197

Python基础知识:列表推导式详解

嗨喽,大家好呀~这里是爱看美女的茜茜呐把一个列表里面的每个元素, 经过相同的处理 ,生成另一个列表。

m0_72282564的博客 681

Python语言求解嵌套列表中的最大元素和

在本文中,分享了解决嵌套列表中寻找最大元素和的问题。通过使用递归、列表推导和NumPy库等不同方法,展示了灵活而高效的解决方案。递归方法通过深度遍历嵌套列表,能够逐级查找最大元素。列表推导则通过展平嵌套列表,将其转换为一维列表,从而简化了最大元素的查找过程。最后,NumPy库的应用则为处理更复杂的嵌套结构提供了强大的工具。在选择解决方案时,需要根据具体的嵌套列表结构和性能需求来权衡不同的方法。递归适用于层次结构较深的情况,而列表推导适用于结构较为简单的情况。

涛哥聊Python 698
上一篇: Python基本数据类型之set
下一篇: 举例详解Python中的split()函数的使用方法
Kola_Abner
博客等级 码龄14年 27粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值