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基类函数的重载与调用实例分析
Jan 12 Python
为Python程序添加图形化界面的教程
Apr 29 Python
Python中Django框架下的staticfiles使用简介
May 30 Python
Python找出文件中使用率最高的汉字实例详解
Jun 03 Python
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
Python实现列表转换成字典数据结构的方法
Mar 11 Python
Python企业编码生成系统之系统主要函数设计详解
Jul 26 Python
利用Python检测URL状态
Jul 31 Python
Python函数基本使用原理详解
Mar 19 Python
Django实现列表页商品数据返回教程
Apr 03 Python
如何将tensorflow训练好的模型移植到Android (MNIST手写数字识别)
Apr 22 Python
利用Python如何实时检测自身内存占用
May 09 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操作Redis数据库常用方法示例
2018/08/25 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
在Ajax中使用Flash实现跨域数据读取的实现方法
2010/12/02 Javascript
javascript 弹出窗口中是否显示地址栏的实现代码
2011/04/14 Javascript
通过JS来动态的修改url,实现对url的增删查改
2014/09/01 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
node.js发送邮件email的方法详解
2017/01/06 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
webpack学习笔记之代码分割和按需加载的实例详解
2017/07/20 Javascript
最全正则表达式总结:验证QQ号、手机号、Email、中文、邮编、身份证、IP地址等
2017/08/16 Javascript
Vue组件模板的几种书写形式(3种)
2020/02/19 Javascript
js实现小时钟效果
2020/03/25 Javascript
js实现飞机大战小游戏
2020/08/26 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
python读取word文档,插入mysql数据库的示例代码
2018/11/07 Python
pytorch自定义初始化权重的方法
2019/08/17 Python
Python全栈之列表数据类型详解
2019/10/01 Python
Python实现图像去噪方式(中值去噪和均值去噪)
2019/12/18 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
洛杉矶生活休闲而精致的基础品牌:Mika Jaymes
2018/01/07 全球购物
世界领先的豪华床上用品供应商之一:Bedeck Home
2019/03/18 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
C++面试题目
2013/06/25 面试题
武汉高蓝德国际.net机试
2016/06/24 面试题
网络方面基础面试题
2012/11/16 面试题
法院实习人员自我鉴定
2013/09/26 职场文书
毕业生如何写自荐信
2014/03/26 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
国庆阅兵观后感
2015/06/15 职场文书
Python基础之hashlib模块详解
2021/05/06 Python