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实现同时兼容老版和新版Socket协议的一个简单WebSocket服务器
Jun 04 Python
Python模拟百度登录实例详解
Jan 20 Python
简单学习Python多进程Multiprocessing
Aug 29 Python
python爬取哈尔滨天气信息
Jul 14 Python
python批量修改图片大小的方法
Jul 24 Python
Python模拟自动存取款机的查询、存取款、修改密码等操作
Sep 02 Python
linux查找当前python解释器的位置方法
Feb 20 Python
Python实现多线程下载脚本的示例代码
Apr 03 Python
django为Form生成的label标签添加class方式
May 20 Python
python xlsxwriter模块的使用
Dec 24 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
Jan 28 Python
Python实现拼音转换
Jun 07 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 session_start()问题解疑(详细介绍)
2013/07/05 PHP
php根据年月获取季度的方法
2014/03/31 PHP
php修改指定文件后缀的方法
2014/09/11 PHP
php生成zip文件类实例
2015/04/07 PHP
php实现websocket实时消息推送
2018/03/30 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
Javascript remove 自定义数组删除方法
2009/10/20 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
2010/02/07 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
Javascript中的关键字和保留字整理
2014/10/16 Javascript
js实现双击图片放大单击缩小的方法
2015/02/17 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
详解webpack2异步加载套路
2018/09/14 Javascript
详解JavaScript中typeof与instanceof用法
2018/10/24 Javascript
使用vue实现各类弹出框组件
2019/07/03 Javascript
[02:03]完美世界DOTA2联赛10月30日赛事集锦
2020/10/31 DOTA
Python守护进程和脚本单例运行详解
2017/01/06 Python
详谈python http长连接客户端
2017/06/12 Python
利用selenium爬虫抓取数据的基础教程
2019/06/10 Python
Python中函数的返回值示例浅析
2019/08/28 Python
Python Gitlab Api 使用方法
2019/08/28 Python
python config文件的读写操作示例
2019/09/27 Python
Python如何使用OS模块调用cmd
2020/02/27 Python
浅谈python处理json和redis hash的坑
2020/07/16 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
css3 实现滚动条美化效果的实例代码
2021/01/06 HTML / CSS
Hawes & Curtis澳大利亚官网:英国经典服饰品牌
2018/10/29 全球购物
卡骆驰英国官网:Crocs英国
2019/08/22 全球购物
机械设计专业应届生求职信
2013/11/21 职场文书
50岁生日感言
2014/01/23 职场文书
自荐信如何制作?
2014/02/21 职场文书
新年寄语大全
2014/04/12 职场文书
老干部工作先进集体事迹材料
2014/05/21 职场文书
婚庆公司计划书
2014/09/15 职场文书
毕业生对母校寄语
2015/02/26 职场文书