Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain

3.4 列表推导式与生成器

列表推导式

列表推导式(List Comprehension)是 Python 中一种简洁且高效的创建列表的方式。它允许你通过一行代码生成一个新的列表,而不需要使用传统的 for 循环和 append 方法。

基本语法:

[expression for item in iterable if condition]
  • expression:生成列表元素的表达式。
  • item:迭代变量,表示可迭代对象中的每个元素。
  • iterable:可迭代对象,如列表、元组、字符串等。
  • condition:可选的条件表达式,用于过滤元素。

示例:

# 生成一个包含 1 到 10 的平方的列表
squares = [x**2 for x in range(1, 11)]
print(squares)  # 输出: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 生成一个包含偶数的列表
evens = [x for x in range(1, 11) if x % 2 == 0]
print(evens)  # 输出: [2, 4, 6, 8, 10]

嵌套列表推导式: 列表推导式可以嵌套使用,以生成更复杂的列表结构。

示例:

# 生成一个 3x3 的矩阵
matrix = [[i + j for j in range(3)] for i in range(3)]
print(matrix)  # 输出: [[0, 1, 2], [1, 2, 3], [2, 3, 4]]

生成器

生成器(Generator)是 Python 中一种特殊的迭代器,它允许你按需生成值,而不是一次性生成所有值。生成器使用 yield 关键字来返回值,并且在每次调用时从上次暂停的地方继续执行。

基本语法:

def generator_function():
    yield expression

示例:

# 生成一个简单的生成器
def simple_generator():
    yield 1
    yield 2
    yield 3

gen = simple_generator()
print(next(gen))  # 输出: 1
print(next(gen))  # 输出: 2
print(next(gen))  # 输出: 3

生成器表达式: 生成器表达式与列表推导式类似,但它使用圆括号而不是方括号,并且返回一个生成器对象。

示例:

# 生成一个生成器表达式
gen_expr = (x**2 for x in range(1, 11))
print(next(gen_expr))  # 输出: 1
print(next(gen_expr))  # 输出: 4

生成器的优势:

  • 内存效率:生成器按需生成值,不需要一次性存储所有值,因此在处理大数据集时非常高效。
  • 惰性求值:生成器只在需要时计算值,适合处理无限序列或大规模数据流。

示例:

# 生成一个无限序列的生成器
def infinite_sequence():
    num = 0
    while True:
        yield num
        num += 1

gen = infinite_sequence()
print(next(gen))  # 输出: 0
print(next(gen))  # 输出: 1
print(next(gen))  # 输出: 2

列表推导式与生成器的比较

特性列表推导式生成器
内存使用一次性生成所有值,占用较多内存按需生成值,内存效率高
适用场景适合小规模数据适合大规模数据或无限序列
语法使用方括号 []使用圆括号 () 或 yield
返回值返回列表返回生成器对象

总结: 列表推导式和生成器都是 Python 中强大的工具,用于高效地处理和生成数据。列表推导式适合处理小规模数据,而生成器则更适合处理大规模数据或需要惰性求值的场景。根据具体需求选择合适的工具,可以显著提高代码的效率和可读性。

Last Updated:: 3/17/25, 7:20 PM