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实现挑选出来100以内的质数
Mar 24 Python
使用Python脚本对Linux服务器进行监控的教程
Apr 02 Python
Python中使用hashlib模块处理算法的教程
Apr 28 Python
解决Pycharm无法import自己安装的第三方module问题
May 18 Python
实例讲解python中的序列化知识点
Oct 08 Python
pyqt5 使用label控件实时显示时间的实例
Jun 14 Python
python实现五子棋人机对战游戏
Mar 25 Python
用scikit-learn和pandas学习线性回归的方法
Jun 21 Python
python pip安装包出现:Failed building wheel for xxx错误的解决
Dec 25 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 Python
python函数超时自动退出的实操方法
Dec 28 Python
python在协程中增加任务实例操作
Feb 28 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
一个简易需要注册的留言版程序
2006/10/09 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
2009/06/01 PHP
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
PHP自带方法验证邮箱、URL、IP是否合法的函数
2016/12/08 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
兼容IE/Firefox/Opera/Safari的检测页面装载完毕的脚本Ext.onReady的实现
2009/07/14 Javascript
javascript如何动态加载表格与动态添加表格行
2013/11/27 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
JavaScript中的toDateString()方法使用详解
2015/06/12 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
javascript实现自动输出文本(打字特效)
2015/08/27 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
全面解析Bootstrap中scrollspy(滚动监听)的使用方法
2016/06/06 Javascript
AngularJS中一般函数参数传递用法分析
2016/11/22 Javascript
vue-resource调用promise取数据方式详解
2017/07/21 Javascript
vue实现手机号码抽奖上下滚动动画示例
2017/10/18 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
JS实现table表格内针对某列内容进行即时搜索筛选功能
2018/05/11 Javascript
javascript实现日历效果
2019/06/17 Javascript
使用Vue.set()方法实现响应式修改数组数据步骤
2019/11/09 Javascript
用实例分析Python中method的参数传递过程
2015/04/02 Python
在Python程序中操作MySQL的基本方法
2015/07/29 Python
浅谈python对象数据的读写权限
2016/09/12 Python
python3.5实现socket通讯示例(TCP)
2017/02/07 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
记一次高分屏下canvas模糊问题
2020/02/17 HTML / CSS
澳大利亚领先的武术用品和健身器材供应商:SMAI
2019/03/24 全球购物
面试通知邮件
2015/04/20 职场文书
学生病假条怎么写
2015/08/17 职场文书
使用vue判断当前环境是安卓还是IOS
2022/04/12 Vue.js