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 26进制计算实现方法
May 28 Python
Python的re模块正则表达式操作
May 25 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
Jul 09 Python
解决Pycharm调用Turtle时 窗口一闪而过的问题
Feb 16 Python
谈一谈基于python的面向对象编程基础
May 21 Python
Django框架反向解析操作详解
Nov 28 Python
keras中的卷积层&amp;池化层的用法
May 22 Python
keras实现图像预处理并生成一个generator的案例
Jun 17 Python
python实现PolynomialFeatures多项式的方法
Jan 06 Python
python - asyncio异步编程
Apr 06 Python
Python序列化模块JSON与Pickle
Jun 05 Python
Python创建SQL数据库流程逐步讲解
Sep 23 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
关于查看MSSQL 数据库 用户每个表 占用的空间大小
2013/06/21 PHP
php实现简单文件下载的方法
2015/01/30 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
PHP文件打开关闭及读写操作示例解析
2020/08/06 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
js函数排序的实例代码
2013/07/01 Javascript
js图片模糊切换显示特效的方法
2015/02/17 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
js只执行1次的函数示例
2016/07/20 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
2019/04/12 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
vue实践---vue不依赖外部资源实现简单多语操作
2020/09/21 Javascript
[02:30]DOTA2英雄基础教程 暗影恶魔
2013/12/17 DOTA
python中__call__内置函数用法实例
2015/06/04 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
Python的re模块正则表达式操作
2016/05/25 Python
Flask框架的学习指南之开发环境搭建
2016/11/20 Python
由浅入深讲解python中的yield与generator
2017/04/05 Python
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
python中kmeans聚类实现代码
2018/02/23 Python
Python将string转换到float的实例方法
2019/07/29 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
2019/08/09 Python
优秀护士获奖感言
2014/02/20 职场文书
授权委托书
2014/07/31 职场文书
2014年大学生党员自我评议
2014/09/22 职场文书
地下停车场租赁协议范本
2014/10/07 职场文书
2016自主招生校长推荐信范文
2015/03/23 职场文书
财务稽核岗位职责
2015/04/13 职场文书
假如给我三天光明读书笔记
2015/06/26 职场文书