如果你还在使用 For 循环迭代列表,那么你需要了解了解列表推导式,看看它的基本概念都是什么。

列表解析式(List comprehension)或者称为列表推导式,是 Python 中非常强大和优雅的方法。它可以基于现有的列表做一些操作,从而快速创建新列表。在我们第一次见到列表推导式时,可能会感觉这种方法非常炫酷,因此写列表推导式是非常爽的一件事。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:1097524789

如果在我们刚接触 Python 时,列表推导式可能看起来比较复杂,但是了解后会发现它非常好用。正如上图所示,列表推导式不仅可读性非常强,它所需要的代码量是最少的,它的执行速度也是最快的。

对于列表推导式,我们可以从列表中选择具体的元素,并做一些操作和判断,从而创建新的列表。值得注意的是,我们甚至能使用 Pandas Series 或 NumPy Array 进行列表推导操作。下面让我们具体看看列表推导是什么吧!

什么是列表推导式

如果我们有一个列表,并希望抽取列表中的元素,那么最标准的方法是使用 Python 循环,但是我们也可以直接通过列表推导式,它只需一行代码就能搞定所有操作。当然,抽取列表元素的前提是,我们要理解列表是一种可迭代对象,它允许依次读取不同的元素。

想象一下,如果动物园中有很多不同的动物,每年每一只动物都需要定期体检,那么动物园就是列表。我们可以遍历整个动物园,并依次抽取动物,抽取的动物并不做进一步的处理,直接放到体检列表中。如下所示为一般 Python 循环的做法:

# Creating our animal park
animal_park = [ Rabbit , Rabbit , Rabbit , Rabbit , Cat , Cat , Cat , Cat , Cat , Cat , Cat ,  Turtle , Turtle , Turtle , Turtle , Turtle , Turtle , Turtle ,  Dog , Dog ,  Kangaroo , Kangaroo , Kangaroo , Kangaroo , Kangaroo , Kangaroo ]# Creating a new list for our animal doctor with all animals
animal_doctor = []
for animal in animal_park:animal_doctor.append(animal)

上面的代码很简单,用一个 for 循环就行,它的语义也很容易理解。如下我们可以使用列表推导式重写这一个循环:

animal_doctor = [animal for animal in animal_park]

通过列表推导式,我们将代码量由三行降低到一行。如果对比两者,我们会发现它们其实是一样的,差不多都是创建、遍历和接收三部分。

图1:标准循环与列表推导的对比。

条件语句

这样看起来列表推导式也没什么大不了,但别忘了它还能对元素做进一步操作,例如加个条件语句。在标准的列表循环中,我们的条件语句如下所示会加到 for 循环中。

animal_doctor = []
for animal in animal_park:if animal !=  Dog  and animal !=  Cat :animal_doctor.append(animal)

在列表推导式中,我们可以将条件加到里面,用稍微长一点的单行代码完成整个流程。上面代码块可以等价地表达为:

nimal_doctor = [animal for animal in animal_park if animal !=  Dog  and animal !=  Cat ]

另外非常重要的一点是,列表推导式的速度非常快。如下两者都加了条件语句,但是列表推导式要比一般的循环语句快了 51%。

图2:列表推导与标准循环二者速度的对比。

最后,如果你使用过列表推导式创建新的列表,那么你最好一直使用它,因为我们没有原因再使用标准 Python 循环。我们可以发现,只要明晰了基本概念,那么列表推导式还是非常容易使用的。

迭代列表不要For循环,这是Python列表推导式最基本的概念相关推荐

  1. python列表第几个怎么表示-Python列表操作大全(非常全)

    Python列表操作大全(非常全!!!) 对于python列表的理解可以和C语言里面的数组进行比较性的记忆与对照,它们比较相似,对于python里面列表的定义可以直接用方括号里加所包含对象的方法,并且 ...

  2. Python生成器推导式

    Python 生成器推导式 趁刚总结的列表推导式还热乎,来看看生成器推导式. 有需要了解列表推导式的小伙伴可以去看之前我的总结Python列表推导式 一.列表推导式VS生成器推导式 1.从形式上看,生 ...

  3. python中的字典推导式_17.python 字典推导式(经典代码)

    在昨天的文章中,我们介绍了关于** python列表推导式** 的使用,字典推导式使用方法其实也类似,也是通过循环和条件判断表达式配合使用,不同的是字典推导式返回值是一个字典,所以整个表达式需要写在{ ...

  4. Python 字典推导式 - Python零基础入门教程

    目录 一.Python 字典推导式简介 二.Python 字典推导式语法 三.Python 字典推导式实战 1.在字典中提取或者修改数据,返回新的字典 2.在字符串中提取数据,返回新的字典 四.重点总 ...

  5. Python 条件推导式 - Python零基础入门教程

    目录 一.Python 条件推导式简介 二.Python 条件推导式使用 1.Python 条件推导式语法 2.Python 条件推导式练习 三.猜你喜欢 零基础 Python 学习路线推荐 : Py ...

  6. Python字典推导式

    对于字典,它和列表.元组一样,也可以使用字典推导式来快速的生成一个字典,它的表现形式和列表推导式类似,只不过将列表推导式中的中括号[]改为大括号{}: {键表达式:值表达式 for 循环} 例如,我们 ...

  7. Python基础-推导式

    列表推导式 字典推导式 集合推导式 只有这三类有推导式,字符串和元组 没有推导式,推导式的作用是简化代码 一.列表推导式: 作用,用一个表达式创建一个有规律的列表或控制一个有规律列表,列表推导式又叫做 ...

  8. Python集合推导式

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python集合推导式 ● 选择题 请问以下Python代码输出的结果 ...

  9. Python入门 推导式 ! 解释:生成器表达式和列表推导式的区别

    Python 入门之 推导式 学习python中有什么不懂的地方,小编这里推荐加小编的python学习群:895,817, 687 有任何不懂的都可以在里面交流,还有很好的视频教程pdf学习资料,大家 ...

最新文章

  1. CC讲坛-大脑疾病背后的秘密-许执恒
  2. Python才是世界上最好的语言
  3. kienct -color
  4. C语言循环结构素数判断,C语言实验之判断素数(循环结构java)方法讲解
  5. Java虚拟机专题之内存分配(读书笔记)
  6. web报表工具FineReport的JS编辑框和URL地址栏语法简介
  7. php Access-Control-Allow-Origin 解决跨域问题
  8. Mysql(2)_ binlog文件
  9. C++--第7课 - 面向对象基本概念
  10. FPGA实现cameralink高清相机解码
  11. 怎么查询dns服务器地址自动获取,如何查看DNS服务器地址以及IP地址
  12. Python之Selenium模拟浏览器
  13. psql: could not connect to server: No such file or directory
  14. 快手伸手“供给侧”,找到直播电商的“源头活水”?
  15. HPP(Hosted Payment Page)支付模式
  16. “Random“ objects should be reused解决 Random() 低效问题
  17. 编译原理(哈工大)绪论
  18. c语言随机生成四则运算10道,c语言编10道四则运算题
  19. 美国搜索市场之战 微软终于战胜雅虎
  20. 杰理之4.0工具固件升级【篇】

热门文章

  1. easyui-tabs
  2. 内连接 左连接 右连接 交叉连接的区别
  3. MySQL · TokuDB · rbtree block allocator
  4. Exchange 2013 SP1部署系列7:发送连接器的配置
  5. 自定义UISwitch
  6. 通过Repository Manager 1.3来管理戴尔驱动程序更新
  7. DreamFactory 第7章 限制和记录API请求
  8. Docker的今生前世,关于Docker的一些见解
  9. Hadoop教程(三)HDFS文件系统Shell命令
  10. Restic 跨平台加密备份工具