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 fileinput模块使用介绍
Nov 30 Python
python3简单实现微信爬虫
Apr 09 Python
用Python进行TCP网络编程的教程
Apr 29 Python
在ironpython中利用装饰器执行SQL操作的例子
May 02 Python
python topN 取最大的N个数或最小的N个数方法
Jun 04 Python
Python 忽略warning的输出方法
Oct 18 Python
Pandas库之DataFrame使用的学习笔记
Jun 21 Python
python torch.utils.data.DataLoader使用方法
Apr 02 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
Jun 17 Python
python如何建立全零数组
Jul 19 Python
Python爬虫之爬取最新更新的小说网站
May 06 Python
Python  序列化反序列化和异常处理的问题小结
Dec 24 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公用函数列表[正则]
2007/02/22 PHP
js 动态添加标签(新增一行,其实很简单,就是几个函数的应用)
2009/03/26 Javascript
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
将光标定位于输入框最右侧实现代码
2012/12/04 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
js实现格式化金额,字符,时间的方法
2015/02/26 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
2015/03/26 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
jQuery 中ajax异步调用的四种方式
2016/06/28 Javascript
javascript设计模式之module(模块)模式
2016/08/19 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
Echarts基本用法_动力节点Java学院整理
2017/08/11 Javascript
ES6知识点整理之模块化的应用详解
2019/04/15 Javascript
vue实现的请求服务器端API接口示例
2019/05/25 Javascript
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
Windows下安装python2.7及科学计算套装
2015/03/05 Python
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
Django 请求Request的具体使用方法
2019/11/11 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
2019/12/04 Python
Pytorch 实现focal_loss 多类别和二分类示例
2020/01/14 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
利用canvas实现图片压缩的示例代码
2018/07/17 HTML / CSS
纪伊国屋泰国网上书店:Kinokuniya泰国
2017/12/24 全球购物
Yahoo-PHP面试题2
2014/12/06 面试题
Ibatis如何使用动态表名
2015/07/12 面试题
个人自荐书
2013/12/20 职场文书
部队党性分析材料
2014/02/16 职场文书
实习会计求职自荐信范文
2014/03/10 职场文书
文明和谐家庭事迹材料
2014/05/18 职场文书
校园文明标语
2014/06/13 职场文书
2014会计年终工作总结
2014/12/20 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书