什么是python的列表推导式


Posted in Python onMay 26, 2020

乍一看到列表推导式你可能会感到疑惑。它们是一种创建和使用列表的简洁方式。理解列表推导式是有用的,因为你可能在其他人的代码里看到列表推导式。下面来了解下列表推导式吧。

数字列表的推导式

回顾之前学过的知识,我们可以创建一个包含前10个数字的列表,如下所示:

squares = []
for number in range(1,11):
  new_square = number**2
  squares.append(new_square)
for square in squares:
  print(square)

上述代码中我们实现了创建包含10个数字的列表,对每个数字作平方操作并将它们存储进新的数组的功能。代码略显冗长,我们可以省略 for 循环中的 new_square 参数,简化代码。使用列表推导式就可以进一步简化代码,如下所示:

squares = [number**2 for number in range(1,11)]
for square in squares:
  print(square)

平方操作和生成新列表的过程都浓缩进了一行代码。你是不是已经晕头转向了,让我们来看看这行代码发生了什么。

首先我们定义了一个列表,名字为 squares 。

接下来看看列表中括号中的代码:

for number in range(1, 11)

它在1-10之间创建一个循环,把每个数字存储到变量 number 中。接下来我们看一看对每次循环中的 number 作了哪些操作。

number**2

每个 number 都作了平方操作,并将结果存储在了定义好的队列中。我们可以用如下语言来阅读这行代码:

squares = [raise number to the second power, for each number in the range 1-10]

其他例子

上个例子是对数字作平方操作,下列代码是对数字作乘操作,仔细阅读代码,体会数字列表表达式的用法。

# Make an empty list that will hold the even numbers.
evens = []
# Loop through the numbers 1-10, double each one, and add it to our list.
for number in range(1,11):
  evens.append(number*2)
# Show that our list is correct:
for even in evens:
  print(even)

非数字列表的推导式

我们也可以在非数字列表中运用推导式。在下面的例子中,我们会创建一个非数字列表,然后利用推导式生成一个新的列表。不运用推导式的源代码如下所示:

# Consider some students.
students = ['bernice', 'aaron', 'cody']
# Let's turn them into great students.
great_students = []
for student in students:
  great_students.append(student.title() + " the great!")
# Let's greet each great student.
for great_student in great_students:
  print("Hello, " + great_student)

我们想写下如下所示的推导式:

great_students = [add 'the great' to each student, for each student in the list of students]

代码如下所示:

# Consider some students.
students = ['bernice', 'aaron', 'cody']
# Let's turn them into great students.
great_students = [student.title() + " the great!" for student in students]
# Let's greet each great student.
for great_student in great_students:
  print("Hello, " + great_student)

扩展练习:

生成一个[[1,2,3],[4,5,6]....]的列表最大值在100以内

首先考虑一下正常情况我们应该怎么写

a = []
for x in range(1,100,3):
 a.append([x,x+1,x+2])

然后再把它转换成列表推导式

a = [[x,x+1,x+2] for x in range(1,100,3)]

以上就是什么是python的列表推导式的详细内容,更多关于python列表推导式的含义及用法的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python实现多并发访问网站功能示例
Jun 19 Python
十分钟利用Python制作属于你自己的个性logo
May 07 Python
使用matplotlib中scatter方法画散点图
Mar 19 Python
Python3.0中普通方法、类方法和静态方法的比较
May 03 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 Python
使用Python函数进行模块化的实现
Nov 15 Python
查看端口并杀进程python脚本代码
Dec 17 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
Mar 05 Python
PyTorch加载自己的数据集实例详解
Mar 18 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
python logging模块的使用详解
Oct 23 Python
python中列表的含义及用法
May 26 #Python
初学者学习Python好还是Java好
May 26 #Python
python函数map()和partial()的知识点总结
May 26 #Python
Python selenium使用autoIT上传附件过程详解
May 26 #Python
Python的历史与优缺点整理
May 26 #Python
python实现逢七拍腿小游戏的思路详解
May 26 #Python
Python是什么 Python的用处
May 26 #Python
You might like
PHP has encountered an Access Violation 错误的解决方法
2010/01/17 PHP
一个PHP缓存类代码(附详细说明)
2011/06/09 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
2012/08/22 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
深入理解JavaScript系列(29):设计模式之装饰者模式详解
2015/03/03 Javascript
理解javascript中DOM事件
2015/12/25 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
jQuery替换节点元素的操作方法
2018/03/18 jQuery
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
小程序从手动埋点到自动埋点的实现方法
2019/01/24 Javascript
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
关于uniApp editor微信滑动问题
2021/01/15 Javascript
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
python+matplotlib绘制3D条形图实例代码
2018/01/17 Python
python邮件发送smtplib使用详解
2020/06/16 Python
Python获取、格式化当前时间日期的方法
2020/02/10 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
Ratchet 模态框的实现
2020/08/19 HTML / CSS
摩托车和ATV零件、配件和服装的首选在线零售商:MotoSport
2017/12/22 全球购物
科颜氏印度官网:Kiehl’s印度
2021/02/20 全球购物
大学本科毕业生的自我鉴定范文
2013/11/19 职场文书
关于安全的广播稿
2014/10/23 职场文书
保姆聘用合同
2015/09/21 职场文书
Golang 链表的学习和使用
2022/04/19 Golang