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装饰器使用示例及实际应用例子
Mar 06 Python
python下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 Python
python使用suds调用webservice接口的方法
Jan 03 Python
pycharm 实现显示project 选项卡的方法
Jan 17 Python
python中几种自动微分库解析
Aug 29 Python
python中的Elasticsearch操作汇总
Oct 30 Python
Python类如何定义私有变量
Feb 03 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
Apr 07 Python
Python基于smtplib协议实现发送邮件
Jun 03 Python
Python中对象的比较操作==和is区别详析
Feb 12 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 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
使用YUI+Ant 实现JS CSS压缩
2014/09/02 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
2014/11/04 PHP
php新浪微博登录接口用法实例
2014/12/23 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
PHP仿微信多图片预览上传实例代码
2016/09/13 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
XHTML-Strict 内允许出现的标签
2006/12/11 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
2014/04/08 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
JavaScript弹窗基础篇
2016/04/27 Javascript
js 定位到某个锚点的方法
2016/11/19 Javascript
js最简单的双向绑定实例讲解
2018/01/02 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
react-native 实现购物车滑动删除效果的示例代码
2021/01/15 Javascript
跟老齐学Python之??碌某?? target=
2014/09/12 Python
使用Python生成随机密码的示例分享
2016/02/18 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
Python编程之string相关操作实例详解
2017/07/22 Python
python爬取各类文档方法归类汇总
2018/03/22 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
解决Python获取字典dict中不存在的值时出错问题
2018/10/17 Python
django-csrf使用和禁用方式
2020/03/13 Python
Python requests接口测试实现代码
2020/09/08 Python
小米乌克兰网上商店:Xiaomi.UA
2019/10/29 全球购物
餐饮业的创业计划书范文
2013/12/26 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
大学生求职计划书
2014/04/30 职场文书
努力学习演讲稿
2014/05/10 职场文书
旅游局领导班子“四风”问题对照检查材料思想汇报
2014/09/29 职场文书
解决go在函数退出后子协程的退出问题
2021/04/30 Golang