什么是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 相关文章推荐
使用Python3中的gettext模块翻译Python源码以支持多语言
Mar 31 Python
Python OpenCV读取png图像转成jpg图像存储的方法
Oct 28 Python
20行python代码的入门级小游戏的详解
May 05 Python
ubuntu 18.04搭建python环境(pycharm+anaconda)
Jun 14 Python
Python函数中的可变长参数详解
Sep 12 Python
Python中使用gflags实例及原理解析
Dec 13 Python
Python object类中的特殊方法代码讲解
Mar 06 Python
keras 多gpu并行运行案例
Jun 10 Python
python爬虫请求头的使用
Dec 01 Python
python 使用csv模块读写csv格式文件的示例
Dec 02 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
Jan 27 Python
python数字图像处理实现图像的形变与缩放
Jun 28 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调用三种数据库的方法(2)
2006/10/09 PHP
php中将网址转换为超链接的函数
2011/09/02 PHP
thinkphp常见路径用法分析
2014/12/02 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
laravel 实现向公共模板中传值 (view composer)
2019/10/22 PHP
JScript中的undefined和"undefined"的区别
2007/03/08 Javascript
动态添加js事件实现代码
2009/03/12 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
整理的比较全的event对像在ie与firefox浏览器中的区别
2013/11/25 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
javaScript中定义类或对象的五种方式总结
2016/12/04 Javascript
正则中的回溯定义与用法分析【JS与java实现】
2016/12/27 Javascript
js实现tab切换效果
2017/02/16 Javascript
javascript性能优化之分时函数的介绍
2018/03/28 Javascript
基于Nuxt.js项目的服务端性能优化与错误检测(容错处理)
2019/10/23 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
如何在Python中编写并发程序
2016/02/27 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
Python列表(List)知识点总结
2019/02/18 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
Django视图类型总结
2021/02/17 Python
CSS改变网页中鼠标选中文字背景颜色例子
2014/04/23 HTML / CSS
Origins悦木之源英国官网:雅诗兰黛集团高端植物护肤品牌
2017/11/06 全球购物
梅西酒窖:Macy’s Wine Cellar
2018/01/07 全球购物
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
仓库管理计划书
2014/05/04 职场文书
学校师德师风整改方案
2014/10/28 职场文书
房屋租赁意向书范本
2015/05/09 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
SpringBoot集成Redis的思路详解
2021/10/16 Redis
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL