◤一、引言◢
今天为大家介绍一个python使用技巧——列表生成式。列表生成式是用一行代码快速制作列表的方法,在进行程序编程、调测时可以快速制作需要的测试数据。有时候也叫列表推导式,一个意思,大家不要纠结于名字。
◤二、if语句列表生成式◢
if语句的列表生成式类似C的三元运算符?:,但其输出的是一个元素的列表。
>>> #判断 a,b的大小
>>> a = 10
>>> b = 20
>>> # if的常规语法
>>> if a >= b :
... print('{0} 大于等于 {1}'.format(a,b))
... else:
... print('{0} 小于 {1}'.format(a,b))
...
10 小于 20
>>> # if的列表生成式语法
>>> c = [print('{0} 大于等于 {1}'.format(a,b)) if a > b else print('{0} 小于 {1}'.format(a,b))]
10 小于 20
>>> c
[None]
最后返回值赋给变量c,内容为None。这是因为print()函数的返回值是None,如果我们替换为其他的值,则会相应的显示。但要注意,这种方法输出的是一个列表,if语句的列表生成式输出的是一个元素的列表,实际应用较少。
if的列表生成式语法结构:

◤三、for语句的列表生成式◢
for语句的列表生成式是较为常见的应用,可以用一条语句生成复杂的列表数据。
>>>
>>> for i in range(5):
... print('{0: <10}'.format('*'*(i+1)))
...
*
**
***
****
*****
>>>
>>> c = [print('{0: <10}'.format('*'*(i+1))) for i in range(5)]
*
**
***
****
*****
>>> c
[None, None, None, None, None]
上述这个for的列表生成式返回值赋值给变量c,内容为
5个元素的列表,每个元素均为None。这是因为print()函数的返回值是None,下面我们改为输出i。
>>> c = [i for i in range(5)]
>>> c
[0, 1, 2, 3, 4]
可以看到,修改后变量c的值变为了列表[0, 1, 2, 3, 4]。for的列表生成式可以快速制作一个满足要求的列表数据,比较常用。而且它还可以嵌套if语句、lambda函数或自定义函数,实现更多元的列表。
for的列表生成式语法结构:

对于上述的列表生成式,语句块部分是可以嵌套更多的语句的,如继续嵌套for的列表生成式、if的列表生成式,或者其它的。
◤四、总结◢
本节所讲述的列表生成式方法也适合生成器的制作,方法是把方括号替换为圆括号,有兴趣的小伙伴可以自行实验一下。生成器可以较好地控制内存占用问题,对内存不足的场景较为适应。
下面是生成器和列表内存占用的一个示例:
生成器仅占用200个字节,列表占用了920个字节,随着数据量的增加差异会更大。这主要是因为生成器仅在需要时生成数据,不像列表是一次性把所有的数据都记录到内存中。
-----------------------------
延伸阅读:
Python入门:第 1 章 Python 介绍
Python入门:第 2 章 环境搭建与第一个程序
Python入门:第 3 章 基本语法
Python入门:第 4 章 数据结构
Python入门:第 5 章 函数
Python入门:第 6 章 类
Python入门:第 7 章 文件读写
Python入门:第 8 章 Python多进程
Python入门:第 9 章 进程间通信
Python入门:第 10 章 消息队列
自动化办公1——初识Pandas
自动化办公2——Pandas数据结构
自动化办公3——Pandas数据操作1
自动化办公3——Pandas数据操作2
自动化办公4——Pandas数据组合、连接与重构
自动化办公5——Pandas数据透视表
自动化办公6——Pandas数据分组1
自动化办公6——Pandas数据分组2
自动化办公7——Pandas画图
数据可视化——matplotlib基础
数据可视化——matplotlib进阶
数据可视化——seaborn初识
数据可视化——seaborn绘制关系图
数据可视化——seaborn绘制分布图
科学计算1——Numpy初识
科学计算2——Numpy数组操作
科学计算3——Numpy数组变形
科学计算4——Numpy的索引与切片
科学计算5——Numpy的基本计算
科学计算6——Numpy的矩阵运算
使用 NumPy 求解线性方程组:一个完整案例
更多内容请查看微信公众号。
---------知识需要分享,需要传播---------
这里是Python知识驿站,致力于知识传播,让更多人了解Python、使用Python、爱上Python。如果你是一名程序员、业余开发者、IT从业者,或者任何一名对Python感兴趣的人,都可以加入Python知识驿站,让我们一同畅享在知识的海洋中。
---------关注我,获得更多知识---------