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的Django框架中的静态资源管理器django-pipeline
Apr 25 Python
Python进程间通信用法实例
Jun 04 Python
python 函数传参之传值还是传引用的分析
Sep 07 Python
django自带的server 让外网主机访问方法
May 14 Python
python连接mongodb集群方法详解
Feb 13 Python
在python tkinter界面中添加按钮的实例
Mar 04 Python
Django 自定义权限管理系统详解(通过中间件认证)
Mar 11 Python
python中return不返回值的问题解析
Jul 22 Python
Python 如何实现数据库表结构同步
Sep 29 Python
python3 re返回形式总结
Nov 20 Python
使用BeautifulSoup4解析XML的方法小结
Dec 07 Python
Python实现日志实时监测的示例详解
Apr 06 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蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
ArrayList类(增强版)
2007/04/04 Javascript
jQuery中find()方法用法实例
2015/01/07 Javascript
jquery中$each()方法的使用指南
2015/04/30 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
Vue.js自定义指令的用法与实例解析
2017/01/18 Javascript
JavaScript算法教程之sku(库存量单位)详解
2017/06/29 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
vue用addRoutes实现动态路由的示例
2017/09/15 Javascript
深入理解vuex2.0 之 modules
2017/11/20 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
详解开发react应用最好用的脚手架 create-react-app
2018/04/24 Javascript
微信小程序实现自定义modal弹窗封装的方法
2018/06/15 Javascript
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
vue watch关于对象内的属性监听
2019/04/22 Javascript
vue实现页面滚动到底部刷新
2019/08/16 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
[52:02]完美世界DOTA2联赛PWL S2 FTD.C vs SZ 第一场 11.27
2020/11/30 DOTA
学习python之编写简单乘法口诀表实现代码
2016/02/27 Python
简单易懂的python环境安装教程
2017/07/13 Python
python实现数据预处理之填充缺失值的示例
2017/12/22 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
Python安装依赖(包)模块方法详解
2020/02/14 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
HTML5离线缓存Manifest是什么
2016/03/09 HTML / CSS
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
银行会计职员个人的自我评价
2013/09/29 职场文书
质量主管工作职责
2014/09/26 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL
nginx中proxy_pass各种用法详解
2021/11/07 Servers