各种推导式

博客介绍了Python中的推导式,包括列表推导式,有遍历后挨个处理和筛选功能两种形式,还提及了生成器表达式、字典推导式和集合推导式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表推导式

[i for i in range(10)]
#打印列表[0,1,,2,3,4,5,6,7,8,9]

[每一个元素或者是和元素相关的操作 for 元素 in 可迭代数据类型] #遍历只后挨个处理
[满足条件的元素相关的操作 for 元素 in 可迭代数据类型 if 元素相关条件] #筛选功能

aa = [i for i in range(30) if i%3 == 0]
print(aa)
#打印30以内所有能被3整除的数

生成器表达式

a = (i for i in range(10))		# a是生成器
for i in g:
	print(i)
#打印 
#	0
#	1
#	2
#	...
#	10

字典推导式

#将一个字典的key和value对调
dic1 = {'a' : 10,'b' : 20}
dic1_contrary = {dic1[k]: k for k in dic1}
print(dic1_contrary)

#合并大小写对应的value值,将k统一成小写
mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
#{'a':10+7,'b':34,'z':3}
mcase_frequency = {k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0) for k in mcase}
print(mcase_frequency)

集合推导式

#自带结果去重功能
squared = {x**2 for x in [1,-1,2]}
print(squared)
<think>我们之前已经讨论过推导式的基本概念和类型(列表、字典、集合、生成器)。现在用户询问的是“推导式格式”,因此我们需要详细解释各种推导式的语法结构。 推导式的通用格式: [expression for item in iterable] # 列表推导式 {key_expression: value_expression for item in iterable} # 字典推导式 {expression for item in iterable} # 集合推导式 (expression for item in iterable) # 生成器表达式 带条件的推导式: [expression for item in iterable if condition] 多个循环的推导式(嵌套循环): [expression for item1 in iterable1 for item2 in iterable2] 同时包含条件表达式和循环: [expression for item in iterable if condition1 and condition2] 也可以使用if-else(注意:此时if-else是表达式的一部分,要放在for前面): [expression1 if condition else expression2 for item in iterable] 下面我们分别详细说明每种推导式的格式。</think>### Python 推导式格式详解 推导式(Comprehension)是 Python 中创建数据结构的简洁语法,支持列表、字典、集合和生成器四种类型。以下是各种推导式的标准格式: --- ### ✅ 1. 列表推导式(List Comprehension) **格式**:`[expression for item in iterable]` ```python # 基本形式 squares = [x**2 for x in range(5)] # [0, 1, 4, 9, 16] # 带条件过滤 even_squares = [x**2 for x in range(10) if x % 2 == 0] # [0, 4, 16, 36, 64] # 带if-else三元表达式 results = ["even" if x % 2 == 0 else "odd" for x in range(3)] # ['even', 'odd', 'even'] ``` --- ### ✅ 2. 字典推导式(Dict Comprehension) **格式**:`{key_expr: value_expr for item in iterable}` ```python # 创建数字平方字典 square_dict = {x: x**2 for x in range(3)} # {0: 0, 1: 1, 2: 4} # 键值对转换 inverted = {v: k for k, v in square_dict.items()} # {0: 0, 1: 1, 4: 2} # 带条件过滤 even_dict = {k: v for k, v in square_dict.items() if k % 2 == 0} # {0: 0, 2: 4} ``` --- ### ✅ 3. 集合推导式(Set Comprehension) **格式**:`{expression for item in iterable}` ```python # 创建唯一字符集合 unique_chars = {char for char in "hello"} # {'h', 'e', 'l', 'o'} # 带条件过滤 vowels = {char for char in "hello" if char in "aeiou"} # {'e', 'o'} ``` --- ### ✅ 4. 生成器表达式(Generator Expression) **格式**:`(expression for item in iterable)` ```python # 创建生成器(惰性求值) gen = (x**2 for x in range(3)) print(next(gen)) # 0 print(next(gen)) # 1 # 带条件过滤 even_gen = (x for x in range(10) if x % 2 == 0) ``` --- ### ✅ 嵌套推导式 可在推导式中嵌套多个`for`循环: ```python # 二维列表扁平化 matrix = [[1, 2], [3, 4]] flat = [num for row in matrix for num in row] # [1, 2, 3, 4] # 笛卡尔积 pairs = [(x, y) for x in range(2) for y in ['a', 'b']] # [(0, 'a'), (0, 'b'), (1, 'a'), (1, 'b')] ``` --- ### ❗ 重要注意事项 1. **变量作用域**:推导式中的变量会泄漏到外部作用域(Python 3.8+ 已修复) 2. **可读性**:避免过度复杂的嵌套推导式(超过两层通常影响可读性) 3. **内存差异**: - 列表/字典/集合推导式:立即创建完整数据结构 - 生成器表达式:惰性求值,节省内存 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值