当前位置: 首页 > news >正文

Python列表生成式

Python 的 列表生成式(List Comprehension) 是一种简洁高效的创建列表的方式,可以用一行代码替代多行循环逻辑。


传统的循环的写法

# 循环遍历列表中的每个元素,并将其平方后添加到新的列表中
original = [0, 1, 2, 3, 4]
squares = []
for num in original:
    squares.append(num ** 2)
print(squares)  # 输出: [0, 1, 4, 9, 16]

使用range() 函数产生整数序列可以简化上面的写法。

squares = []
for x in range(5):
    squares.append(x**2)

使用列表表达式则可以简化为一行

squares = [x**2 for x in range(5)]

基本语法

[expression for item in iterable]
  • expression: 对每个元素的处理表达式
  • item: 迭代变量
  • iterable: 可迭代对象(如列表、字符串、range等)

示例分类

1. 简单生成

生成一个数字平方的列表:

squares = [x**2 for x in range(5)]
# 输出: [0, 1, 4, 9, 16]
2. 带条件筛选

仅保留偶数平方:

even_squares = [x**2 for x in range(10) if x % 2 == 0]
# 输出: [0, 4, 16, 36, 64]
3. 双重循环

生成两个列表的笛卡尔积:

pairs = [(x, y) for x in [1, 2] for y in ['a', 'b']]
# 输出: [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]
4. 嵌套列表生成式

矩阵转置(行列互换):

matrix = [[1, 2, 3], [4, 5, 6]]
transposed = [[row[i] for row in matrix] for i in range(3)]
# 输出: [[1, 4], [2, 5], [3, 6]]
5. 字符串处理

将句子拆分为单词并转为大写:

sentence = "hello world"
upper_words = [word.upper() for word in sentence.split()]
# 输出: ['HELLO', 'WORLD']
6. 条件表达式(三元操作符)

根据数字奇偶性标记:

labels = ["Even" if x % 2 == 0 else "Odd" for x in range(4)]
# 输出: ['Even', 'Odd', 'Even', 'Odd']
7. 字典数据提取

提取字典中的特定键值:

users = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}]
names = [user['name'] for user in users]
# 输出: ['Alice', 'Bob']

与传统循环对比

普通循环写法:

squares = []
for x in range(5):
    squares.append(x**2)

列表生成式写法:

优势与注意事项

  • 优势:代码简洁、执行效率通常更高
  • 注意:避免过度复杂的嵌套,确保可读性

相关文章:

  • 联合体(Union)的使用与应用场景
  • 【解决】Visual Studio 无法中文输入问题
  • 集成电容器降低换向环电感
  • 李想官宣开源整车操作系统
  • 【机器学习】——机器学习基础概念
  • Redis 中的热点键和数据倾斜
  • 行星际激波特征分析及其在太阳风激波自动检测算法开发与优化中的应用
  • 《深度剖析SQL数据类型转换:隐式与显式的奥秘》
  • 超简单:Linux下opencv-gpu配置
  • 什么是 JavaScript 中的原型链(Prototype Chain)?
  • Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(五)
  • 北理工计算机考研复试上机2012年真题
  • 场馆预约小程序的设计与实现
  • 02 相机标定相关坐标系
  • greenhill编译出现:3201原因错误
  • 视频管理平台-信息泄露漏洞
  • 027-7zsfx
  • pom.xml与.yml,java配置参数传递
  • JVM 概述/结构/架构/生命周期
  • 【YOLOv8】YOLOv8改进系列(10)----替换主干网络之UniRepLKNet
  • wordpress简易主题/seo二级目录
  • 网站建设所需服务器/泉州seo
  • 怎么看一个网站是什么程序做的/百度应用
  • 专业佛山网站建设/优化排名案例
  • 在线测评网站怎么做/公司建官网要多少钱
  • 咨询聊城做网站/免费建立网站步骤