什么是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绘制双柱形图代码实例
Dec 14 Python
Python实现将json文件中向量写入Excel的方法
Mar 26 Python
python基础教程项目三之万能的XML
Apr 02 Python
python+os根据文件名自动生成文本
Mar 21 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
python设计tcp数据包协议类的例子
Jul 23 Python
基于pygame实现童年掌机打砖块游戏
Feb 25 Python
pandas dataframe 中的explode函数用法详解
May 18 Python
python函数map()和partial()的知识点总结
May 26 Python
Python如何转换字符串大小写
Jun 04 Python
详解用python -m http.server搭一个简易的本地局域网
Sep 24 Python
filter使用python3代码进行迭代元素的实例详解
Dec 03 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连接局域网MYSQL数据库的简单实例
2013/08/26 PHP
php邮箱地址正则表达式验证
2015/11/13 PHP
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
jQuery插件jcrop+Fileapi完美实现图片上传+裁剪+预览的代码分享
2015/04/22 Javascript
javascript连续赋值问题
2015/07/08 Javascript
JS实现的左侧竖向滑动菜单效果代码
2015/10/19 Javascript
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
JavaScript对象封装的简单实现方法(3种方法)
2017/01/03 Javascript
vuex实现登录状态的存储,未登录状态不允许浏览的方法
2018/03/09 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
js中this的指向问题归纳总结
2018/11/28 Javascript
[02:45]DOTA2英雄基础教程 伐木机
2013/12/23 DOTA
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
基于python实现操作redis及消息队列
2020/08/27 Python
关于HTML5+ API plusready的兼容问题
2020/11/20 HTML / CSS
美国南部最大的家族百货公司:Belk
2017/01/30 全球购物
欧克利英国官网:Oakley英国
2019/08/24 全球购物
会议接待欢迎词
2014/01/12 职场文书
中学生差生评语
2014/01/30 职场文书
师德个人剖析材料
2014/02/02 职场文书
解除劳动合同协议书
2014/04/14 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
大学军训的体会
2014/11/08 职场文书
个人工作保证书
2015/02/28 职场文书
2016抗战胜利71周年红领巾广播稿
2015/12/18 职场文书
2019年XX公司的晨会制度及流程!
2019/07/23 职场文书
导游词之泉州崇武古城
2019/12/20 职场文书
Java日常练习题,每天进步一点点(38)
2021/07/26 Java/Android
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技
Java存储没有重复元素的数组
2022/04/29 Java/Android