python开发入门——列表生成式


Posted in Python onSeptember 03, 2020

介绍

本文主要介绍Python中列表生成式的基本知识和使用

生成列表

要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11):

>>> range(1, 11)
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环:

>>> L = []
>>> for x in range(1, 11):
... L.append(x * x)
... 
>>> L
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

但是循环太繁琐,而列表生成式则可以用一行语句代替循环生成上面的list:

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

这种写法就是Python特有的列表生成式。利用列表生成式,可以以非常简洁的代码生成 list。

写列表生成式时,把要生成的元素 x * x 放到前面,后面跟 for 循环,就可以把list创建出来,十分有用,多写几次,很快就可以熟悉这种语法。

复杂表达式 (TODO)

使用for循环的迭代不仅可以迭代普通的list,还可以迭代dict。

假设有如下的dict:

d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }

完全可以通过一个复杂的列表生成式把它变成一个 HTML 表格:

tds = ['<tr><td>%s</td><td>%s</td></tr>' % (name, score) for name, score in d.iteritems()]
print '<table>'
print '<tr><th>Name</th><th>Score</th><tr>'
print '\n'.join(tds)
print '</table>'

注:字符串可以通过 % 进行格式化,用指定的参数替代 %s。字符串的join()方法可以把一个 list 拼接成一个字符串。

把打印出来的结果保存为一个html文件,就可以在浏览器中看到效果了:

<table border="1">
<tr><th>Name</th><th>Score</th><tr>
<tr><td>Lisa</td><td>85</td></tr>
<tr><td>Adam</td><td>95</td></tr>
<tr><td>Bart</td><td>59</td></tr>
</table>

条件过滤

列表生成式的 for 循环后面还可以加上 if 判断。例如:

>>> [x * x for x in range(1, 11)]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

如果我们只想要偶数的平方,不改动 range()的情况下,可以加上 if 来筛选:

>>> [x * x for x in range(1, 11) if x % 2 == 0]
[4, 16, 36, 64, 100]

有了 if 条件,只有 if 判断为 True 的时候,才把循环的当前元素添加到列表中。

多层表达式

for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。
对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列:

>>> [m + n for m in 'ABC' for n in '123']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']

翻译成循环代码就像下面这样:

L = []
for m in 'ABC':
for n in '123':
L.append(m + n)

结语

以上就是python开发入门——列表生成式的详细内容,更多关于python 列表生成式的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python显示进度条的方法
Sep 20 Python
Python tkinter模块中类继承的三种方式分析
Aug 08 Python
利用aardio给python编写图形界面
Aug 21 Python
Python实现的双色球生成功能示例
Dec 18 Python
Python实现控制台中的进度条功能代码
Dec 22 Python
python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程
May 22 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
Dec 20 Python
PyQt5 加载图片和文本文件的实例
Jun 14 Python
如何使用python操作vmware
Jul 27 Python
python 标准差计算的实现(std)
Jul 29 Python
python操作ini类型配置文件的实例教程
Oct 30 Python
python+opencv实现目标跟踪过程
Jun 21 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
Sep 03 #Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
Sep 03 #Python
Python开发入门——迭代的基本使用
Sep 03 #Python
Python 整行读取文本方法并去掉readlines换行\n操作
Sep 03 #Python
Python多分支if语句的使用
Sep 03 #Python
Python判断字符串是否为合法标示符操作
Sep 03 #Python
图解Python中深浅copy(通俗易懂)
Sep 03 #Python
You might like
让PHP支持断点续传的源码
2010/05/16 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
复制本贴标题和地址的js代码
2008/07/01 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
2012/02/03 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
jQuery内容过滤选择器用法分析
2015/02/10 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
jQuery如何防止Ajax重复提交
2016/10/14 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
JS设置手机验证码60s等待实现代码
2017/06/14 Javascript
关于javascript作用域的常见面试题分享
2017/06/18 Javascript
Vue实现远程获取路由与页面刷新导致404错误的解决
2019/01/31 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
layui 中select下拉change事件失效的解决方法
2019/09/20 Javascript
关于引入vue.js 文件的知识点总结
2020/01/28 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
js实现3D旋转效果
2020/08/18 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
[57:55]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第二场 12.12
2020/12/16 DOTA
Python urllib、urllib2、httplib抓取网页代码实例
2015/05/09 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
2018/08/03 Python
Python 创建新文件时避免覆盖已有的同名文件的解决方法
2018/11/16 Python
阿里健康大药房:阿里自营网上药店
2017/08/01 全球购物
土耳其国际性时尚购物网站:Modanisa
2018/01/19 全球购物
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
美国领先的低折扣旅行网站:Hotwire
2019/01/19 全球购物
运动会解说词50字
2014/01/18 职场文书
庆祝国庆节标语
2014/10/09 职场文书
2014年绿化工作总结
2014/12/09 职场文书
团员年度个人总结
2015/02/26 职场文书
实习生辞职信范文
2015/03/02 职场文书
电力安全学习心得体会
2016/01/18 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书