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 相关文章推荐
详解Django中的过滤器
Jul 16 Python
Python Sqlite3以字典形式返回查询结果的实现方法
Oct 03 Python
Python的SimpleHTTPServer模块用处及使用方法简介
Jan 22 Python
Python 字符串与数字输出方法
Jul 16 Python
纯用NumPy实现神经网络的示例代码
Oct 24 Python
实例讲解Python中浮点型的基本内容
Feb 11 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
django的聚合函数和aggregate、annotate方法使用详解
Jul 23 Python
PyQt 图解Qt Designer工具的使用方法
Aug 06 Python
解决Django中调用keras的模型出现的问题
Aug 07 Python
详解python 中in 的 用法
Dec 12 Python
浅谈keras中loss与val_loss的关系
Jun 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 和 MySQL 开发的 8 个技巧
2006/10/09 PHP
dedecms模版制作使用方法
2007/04/03 PHP
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
jquery div 居中技巧应用介绍
2012/11/24 Javascript
jquery实现输入框动态增减的实例代码
2013/07/14 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
jQuery功能函数详解
2015/02/01 Javascript
JS跨域交互(jQuery+php)之jsonp使用心得
2016/07/01 Javascript
自动化测试读写64位操作系统的注册表
2016/08/15 Javascript
Jquery EasyUI Datagrid右键菜单实现方法
2016/12/30 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
深入理解JavaScript创建对象的多种方式以及优缺点
2017/06/01 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
redux-saga 初识和使用
2018/03/10 Javascript
详解package.json版本号规则
2019/08/01 Javascript
Python的Django框架中自定义模版标签的示例
2015/07/20 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
2019/11/11 Python
TensorFlow设置日志级别的几种方式小结
2020/02/04 Python
Python抓新型冠状病毒肺炎疫情数据并绘制全国疫情分布的代码实例
2020/02/05 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
PyQt5的相对布局管理的实现
2020/08/07 Python
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
e路東瀛(JAPANiCAN)香港:日本旅游、日本酒店和温泉旅馆预订
2018/11/21 全球购物
Zavvi西班牙:电子游戏、极客服装、Blu-ray、Funko Pop等
2019/05/03 全球购物
商场消防演习方案
2014/02/12 职场文书
委托书范本
2014/04/02 职场文书
综合办公室主任岗位职责
2014/04/13 职场文书
部门年终奖分配方案
2014/05/07 职场文书
体操比赛口号
2014/06/10 职场文书
科学发展观演讲稿
2014/09/11 职场文书
旷课检讨书范文
2014/10/30 职场文书
2015年世界艾滋病日活动总结
2015/03/24 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL