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常用方法和技巧
May 18 Python
利用ctypes提高Python的执行速度
Sep 09 Python
python实现类之间的方法互相调用
Apr 29 Python
win8下python3.4安装和环境配置图文教程
Jul 31 Python
Python判断一个三位数是否为水仙花数的示例
Nov 13 Python
python使用插值法画出平滑曲线
Dec 15 Python
python将txt文档每行内容循环插入数据库的方法
Dec 28 Python
python实现QQ邮箱/163邮箱的邮件发送
Jan 22 Python
python解析xml简单示例
Jun 21 Python
pytorch 求网络模型参数实例
Dec 30 Python
Python 实现简单的客户端认证
Jul 29 Python
plt.figure()参数使用详解及运行演示
Jan 08 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 数组实例说明
2008/08/18 PHP
php foreach、while性能比较
2009/10/15 PHP
PHP获取MAC地址的具体实例
2013/12/13 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
使用PHP Socket 编程模拟Http post和get请求
2014/11/25 PHP
使用php转义输出HTML到JavaScript
2015/03/27 PHP
php项目开发中用到的快速排序算法分析
2016/06/25 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
Code:loadScript( )加载js的功能函数
2007/02/02 Javascript
js 巧妙去除数组中的重复项
2010/01/25 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
js函数的延迟加载实现代码
2012/10/11 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
confirm的用法示例用于按钮操作时确定是否执行
2014/06/19 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
2015/12/28 Javascript
bootstrap侧边栏圆点导航
2017/01/11 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
layui添加动态菜单与选项卡
2019/07/26 Javascript
功能完善的小程序日历组件的实现
2020/03/31 Javascript
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
使用darknet框架的imagenet数据分类预训练操作
2020/07/07 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
Python2.6版本pip安装步骤解析
2020/08/17 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
Luxplus丹麦:香水和个人护理折扣
2018/04/23 全球购物
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
知识改变命运演讲稿
2014/05/21 职场文书
冰峪沟导游词
2015/02/09 职场文书
学校重阳节活动总结
2015/03/24 职场文书
表彰大会新闻稿
2015/07/17 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书