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 字符串split的用法分享
Mar 23 Python
python复制文件代码实现
Dec 23 Python
Python在Console下显示文本进度条的方法
Feb 14 Python
实例讲解Python的函数闭包使用中应注意的问题
Jun 20 Python
Python使用requests发送POST请求实例代码
Jan 25 Python
python实现微信发送邮件关闭电脑功能
Feb 22 Python
Tensorflow 实现修改张量特定元素的值方法
Jul 30 Python
对python mayavi三维绘图的实现详解
Jan 08 Python
用django设置session过期时间的方法解析
Aug 05 Python
Python实现基于socket的udp传输与接收功能详解
Nov 15 Python
在pytorch中对非叶节点的变量计算梯度实例
Jan 10 Python
python scrapy简单模拟登录的代码分析
Jul 21 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
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
浅谈PHP变量作用域以及地址引用问题
2013/12/27 PHP
thinkPHP中多维数组的遍历方法
2016/01/09 PHP
浅谈PHP中pack、unpack的详细用法
2018/03/12 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
另一个javascript小测验(代码集合)
2011/07/27 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
jquery专业的导航菜单特效代码分享
2015/08/29 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
JS动态增删表格行的方法
2016/03/03 Javascript
ES6新特性之函数的扩展实例详解
2017/04/01 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
在 Node.js 中使用原生 ES 模块方法解析
2017/09/19 Javascript
理解Koa2中的async&amp;await的用法
2018/02/05 Javascript
Vue项目数据动态过滤实践及实现思路
2018/09/11 Javascript
微信小程序wepy框架学习和使用心得详解
2019/05/24 Javascript
微信小程序抽奖组件的使用步骤
2021/01/11 Javascript
python访问系统环境变量的方法
2015/04/29 Python
Python 将pdf转成图片的方法
2018/04/23 Python
python生成n个元素的全组合方法
2018/11/13 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
Python 函数返回值的示例代码
2019/03/11 Python
python3 pygame实现接小球游戏
2019/05/14 Python
伦敦高级内衣品牌:Agent Provocateur(大内密探)
2016/08/23 全球购物
难忘的一天教学反思
2014/04/30 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
合同纠纷调解书
2015/05/20 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL
Python办公自动化之教你如何用Python将任意文件转为PDF格式
2021/06/28 Python
Java基础——Map集合
2022/04/01 Java/Android