⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

Python 列表/字典推导式

Python 推导式 · 难度:进阶 · +15XP

Python 推导式

推导式(Comprehension)是Python中快速创建列表、字典、集合的简洁语法。一行代码就能完成原来需要for循环+条件判断的组合操作,使代码更Pythonic

列表推导式

语法:[表达式 for 变量 in 可迭代对象 if 条件]

# 传统方式
squares = []
for i in range(10):
    if i % 2 == 0:
        squares.append(i**2)
# squares = [0, 4, 16, 36, 64]

# 推导式 — 一行搞定! squares = [i**2 for i in range(10) if i % 2 == 0]

字典推导式

# 将两个列表合并为字典
keys = ['name', 'age', 'city']
values = ['张三', 25, '南宁']
person = {k: v for k, v in zip(keys, values)}
# {'name': '张三', 'age': 25, 'city': '南宁'}

# 过滤字典 scores = {'语文': 85, '数学': 60, '英语': 92} passed = {k: v for k, v in scores.items() if v >= 60} # {'语文': 85, '数学': 60, '英语': 92}

集合推导式

# 提取所有不重复的首字母
words = ['python', 'java', 'php', 'perl', 'rust']
initials = {w[0] for w in words}
# {'p', 'j', 'r'}

# 平方数集合(自动去重) nums = {x**2 for x in range(-3, 4)} # {0, 1, 4, 9}

推导式对比

类型语法示例
列表[x for x in ...][x*2 for x in range(5)]
字典{k:v for k,v in ...}{x:x**2 for x in range(5)}
集合{x for x in ...}{x%3 for x in range(10)}
生成器(x for x in ...)(x**2 for x in range(10))

注意:生成器推导式使用()而非[],不会一次性创建所有元素,而是惰性求值,适用于处理海量数据。

嵌套推导式(处理二维列表)

matrix = [[1,2,3], [4,5,6], [7,8,9]]
# 展平二维列表
flat = [num for row in matrix for num in row]
# [1, 2, 3, 4, 5, 6, 7, 8, 9]

# 转置矩阵 transposed = [[row[i] for row in matrix] for i in range(3)] # [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

实战练习

  1. 用列表推导式生成1-100内所有能被3或5整除的数
  2. 给定字典{key:value},用字典推导式交换键值对
  3. 将字符串列表转为长度字典{"apple":5, "go":2, ...}
  4. 用推导式过滤出列表中长度≥5的单词并转为大写

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 152 篇
0 完成
🔥 0