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 相关文章推荐
在Linux上安装Python的Flask框架和创建第一个app实例的教程
Mar 30 Python
python虚拟环境virualenv的安装与使用
Dec 18 Python
Python入门之三角函数tan()函数实例详解
Nov 08 Python
Python装饰器原理与用法分析
Apr 30 Python
matplotlib savefig 保存图片大小的实例
May 24 Python
python 实现得到当前时间偏移day天后的日期方法
Dec 31 Python
python实现对象列表根据某个属性排序的方法详解
Jun 11 Python
python argparser的具体使用
Nov 10 Python
flask框架json数据的拿取和返回操作示例
Nov 28 Python
解决Pymongo insert时会自动添加_id的问题
Dec 05 Python
python 使用OpenCV进行简单的人像分割与合成
Feb 02 Python
python glom模块的使用简介
Apr 13 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实现的比较完善的购物车类
2014/12/02 PHP
jquery中prop()方法和attr()方法的区别浅析
2013/09/06 Javascript
JS的get和set使用示例
2014/02/20 Javascript
JavaScript中的函数的两种定义方式和函数变量赋值
2014/05/12 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
2016/02/25 Javascript
Js+Ajax,Get和Post在使用上的区别小结
2016/06/08 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
基于vue.js快速搭建图书管理平台
2017/10/29 Javascript
mpvue 如何使用腾讯视频插件的方法
2018/07/16 Javascript
解决Vue在封装了Axios后手动刷新页面拦截器无效的问题
2018/11/08 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
js取0-9随机取4个数不重复的数字代码实例
2019/03/27 Javascript
layui监听select变化,以及设置radio选中的方法
2019/09/24 Javascript
vue学习笔记之给组件绑定原生事件操作示例
2020/02/27 Javascript
解决vue刷新页面以后丢失store的数据问题
2020/08/11 Javascript
[53:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第三场 6.2
2018/06/03 DOTA
python logging日志模块的详解
2017/10/29 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
python3.5安装python3-tk详解
2019/04/26 Python
numpy实现神经网络反向传播算法的步骤
2019/12/24 Python
Python tkinter常用操作代码实例
2020/01/03 Python
python Timer 类使用介绍
2020/12/28 Python
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
美国皮靴公司自1863年:The Frye Company
2016/11/30 全球购物
lookfantastic荷兰:在线购买奢华护肤、护发和化妆品
2018/11/27 全球购物
巴基斯坦购物网站:Goto
2019/03/11 全球购物
Nº21官方在线商店:numeroventuno.com
2019/09/26 全球购物
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
上课迟到检讨书100字
2014/01/11 职场文书
司法局火灾防控方案
2014/06/05 职场文书
试用期辞职信范文
2015/03/02 职场文书
2015年财务部工作总结
2015/04/10 职场文书
闪闪的红星观后感
2015/06/08 职场文书
在python中读取和写入CSV文件详情
2022/06/28 Python