什么是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显示天气预报
Mar 02 Python
python操作数据库之sqlite3打开数据库、删除、修改示例
Mar 13 Python
Python写的Discuz7.2版faq.php注入漏洞工具
Aug 06 Python
对Python新手编程过程中如何规避一些常见问题的建议
Apr 01 Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 Python
Python可变参数用法实例分析
Apr 02 Python
python中如何正确使用正则表达式的详细模式(Verbose mode expression)
Nov 08 Python
用tensorflow构建线性回归模型的示例代码
Mar 05 Python
python用列表生成式写嵌套循环的方法
Nov 08 Python
PowerBI和Python关于数据分析的对比
Jul 11 Python
Pytorch中accuracy和loss的计算知识点总结
Sep 10 Python
Flask中jinja2的继承实现方法及实例
Mar 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 MemCached 高级缓存应用代码
2010/08/05 PHP
WordPress中的shortcode短代码功能使用详解
2016/05/17 PHP
php中的依赖注入实例详解
2019/08/14 PHP
jQuery实现返回顶部功能适合不支持js的浏览器
2014/08/19 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
Node.js的特点和应用场景介绍
2014/11/04 Javascript
jQuery 监控键盘一段时间没输入
2016/04/22 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
VUE实现日历组件功能
2017/03/13 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
js 实现碰撞检测的示例
2020/10/28 Javascript
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
Python运算符重载用法实例分析
2015/06/01 Python
Python赋值语句后逗号的作用分析
2015/06/08 Python
Python进阶之自定义对象实现切片功能
2019/01/07 Python
python 阶乘累加和的实例
2019/02/01 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
10行Python代码实现Web自动化管控的示例代码
2020/08/14 Python
百联网上商城:i百联
2017/01/28 全球购物
365 Tickets英国:全球景点门票
2019/07/06 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
linux面试题参考答案(9)
2016/01/29 面试题
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
小班下学期个人总结
2015/02/12 职场文书
中秋节主题班会
2015/08/14 职场文书
信息技术远程培训心得体会
2016/01/09 职场文书