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实现颜色rgb和hex相互转换的函数
Mar 19 Python
在Python中使用itertools模块中的组合函数的教程
Apr 13 Python
Python实现各种排序算法的代码示例总结
Dec 11 Python
pycharm中连接mysql数据库的步骤详解
May 02 Python
Python 多线程的实例详解
Sep 07 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
Pytorch 实现数据集自定义读取
Jan 18 Python
Python实现密钥密码(加解密)实例详解
Apr 26 Python
13个Pandas实用技巧,助你提高开发效率
Aug 19 Python
python wsgiref源码解析
Feb 06 Python
Python面向对象之内置函数相关知识总结
Jun 24 Python
python游戏开发之pygame实现接球小游戏
Apr 22 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生成静态HTML速度快类库
2007/03/18 PHP
火车头discuz6.1 完美采集的php接口文件
2009/09/13 PHP
php 获取客户端的真实ip
2009/11/30 PHP
php学习笔记 [预定义数组(超全局数组)]
2011/06/09 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
PHP中VC6、VC9、TS、NTS版本的区别与用法详解
2013/10/26 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
php微信公众开发之获取周边酒店信息的方法
2014/12/22 PHP
如何使用php等比例缩放图片
2016/10/12 PHP
Javascript学习笔记1 数据类型
2010/01/11 Javascript
JavaScript日期时间格式化函数分享
2014/05/05 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
JavaScript如何实现组合列表框中元素移动效果
2016/03/01 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
[01:16:37]【全国守擂赛】第三周决赛 Dark Knight vs. 一个弱队
2020/05/04 DOTA
Python删除Java源文件中全部注释的实现方法
2017/08/30 Python
python的socket编程入门
2018/01/29 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
基于Python新建用户并产生随机密码过程解析
2019/10/08 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
基于python实现FTP文件上传与下载操作(ftp&amp;sftp协议)
2020/04/01 Python
Python实现SMTP邮件发送
2020/06/16 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
html5版canvas自由拼图实例
2014/10/15 HTML / CSS
兰芝美国网上商城:购买LANEIGE睡眠面膜等
2017/06/30 全球购物
3个CCIE对一个工程师的面试题
2012/05/06 面试题
大学生职业生涯规划范文——找准自我,定位人生
2014/01/23 职场文书
航空学院求职信
2014/06/11 职场文书
店面出租协议书范本
2014/11/28 职场文书
领导离职感言
2015/08/03 职场文书
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers