Python列表推导式与生成器表达式详解

阿麦
阿麦
发布时间:2026-10-13| 3人浏览过
原创

本文详细解析Python中列表推导式和生成器表达式的核心用法。通过对比传统循环与推导式写法,演示如何高效进行数据转换、条件过滤及三元运算。同时介绍生成器表达式在节省内存方面的优势,涵盖元组、数组初始化及笛卡尔积生成等实际应用场景,帮助开发者写出更简洁高效的Python代码。

列表推导式基础用法

首先观察以下代码示例:


chars = "abcd"
tmp = []
for char in chars:
 tmp.append(ord(char))
print(tmp)

这是传统的实现方式,旨在将字符串中的每个字符转换为对应的ASCII码,并依次存入临时数组tmp中。

使用列表推导式可以简化上述过程:


tmp = [ord(char) for char in chars]

运行结果输出为:[97,98,99,100]

列表推导式中的条件判断

在列表推导式中,还可以结合if和else语句进行条件处理。

当仅使用if条件时:


chars = "abcd"
tmp = [ord(char) for char in chars if ord(char)>=98]
print(tmp)

运行结果输出为:['b','c','d']

此外,还可以利用filter和map函数实现相同的功能:


tmp = list(filter(lambda x:x>=98,map(ord,chars)))

该语句的含义是:首先使用map函数遍历chars中的每个字符,并通过ord函数获取其ASCII码;接着使用filter函数筛选出大于等于98的ASCII码值,最后将这些符合条件的值存入列表。其中,lambda x:x>98定义了一个匿名函数用于判断条件。

当同时存在if和else时:


chars = "abcd"
tmp = [True if ord(char)>=98 else False for char in chars]
print(tmp)

运行结果输出为:[False, True, True, True]

通常情况下,建议保持列表推导式的简短性以提高代码可读性。

利用列表推导式计算笛卡尔积

接下来看另一个示例:利用列表推导式计算笛卡尔积,这里以衣服的颜色和尺寸组合为例。


colors = ["black","white"]
sizes = ["S","M","L"]
tshirts = [(color,size) for color in colors for size in sizes]
print(tshirts)

生成器表达式的应用与优势

生成器表达式可用于生成其他数据类型的序列。虽然列表推导式也能用于初始化元组、数组等其他类型,但生成器表达式是更优的选择。原因在于生成器表达式遵循迭代器协议,能够逐个产生元素,而非一次性构建完整的列表,从而节省内存。

生成器表达式的语法与列表推导式类似,区别仅在于将方括号改为圆括号。

以下是使用生成器表达式生成元组和数组的例子:


chars = "abcd"
tmp = tuple(ord(char) for char in chars)
print(tmp)

运行结果输出为:(97, 98, 99, 100)


import array
chars = "abcd"
a = array.array("I",(ord(char) for char in chars))
print(a)

运行结果输出为:array('I', [97, 98, 99, 100])

array类的构造方法需要提供两个参数,第一个参数指定数组中元素的存储格式。如果生成器表达式是唯一的参数,则无需额外括号;但在本例中并非唯一参数,因此必须使用括号将其包裹。


colors = ["black","white"]
sizes = ["S","M","L"]
for tshirt in ("%s %s" % (c,s) for c in colors for s in sizes):
  print(tshirt)

运行结果输出为:

black S black M black L white S white M white L

以上便是本次介绍的所有相关知识点,感谢大家的学习以及对本站的支持。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。