列表推导式 字典推导式 集合推导式

Python数据结构推导式精讲
本文深入探讨了Python中的列表、字典和集合推导式的使用方法,通过实例展示了如何利用推导式简化数据处理流程,提高编程效率。

1,列表推导式 

#coding:utf8
x1 = [x for x in range (5)]
print(x1)
odd = [x for x in range(10) if x % 2 !=0]
print(odd)

运行结果为: 

2, 字典推导式

#coding:utf8
x1 = {n: n**2 for n in range(5)}
print(x1)
x2 = {v: k for k, v in x1.items()}
print (x2)

3,  集合推导式

集合推导式会帮我们去除重复的元素

#coding:utf8
x1 = {i**2 for i in [-1,-5,1,2,-2]}
print(x1)

运行结果:

<think>我们正在讨论Python中的推导式(comprehensions),包括列表、字典和集合推导式。根据提供的引用,我们可以总结如下: 引用[1]和[2]都提到了列表、字典和集合推导式,并给出了具体的例子。引用[3]则提到了公共方法和推导式的格式。 用户要求了解列表、字典和集合推导式的介绍和使用方法。 因此,我们将分别介绍这三种推导式: 1. 列表推导式(List Comprehensions): 用于快速生成列表。 2. 字典推导式(Dictionary Comprehensions): 用于快速生成字典。 3. 集合推导式(Set Comprehensions): 用于快速生成集合。 每种推导式都有相似的结构,基本语法如下: - 列表推导式: `[expression for item in iterable if condition]` - 字典推导式: `{key_expression: value_expression for item in iterable if condition}` - 集合推导式: `{expression for item in iterable if condition}` 注意:集合推导式使用花括号,与字典推导式不同的是,它没有键值对,而是单个表达式。 接下来,我们将分别给出每种推导式的介绍和示例。 </think>### Python推导式详解:列表、字典与集合推导式 Python推导式是一种简洁高效的数据结构构建方式,以下分类详解其语法和应用场景: #### 一、列表推导式(List Comprehensions) **语法格式**: $$[ \text{表达式} \quad \text{for} \quad \text{变量} \quad \text{in} \quad \text{可迭代对象} \quad \text{if} \quad \text{条件} ]$$ **应用示例**: ```python # 生成平方数列表 squares = [i**2 for i in range(1, 6)] print(squares) # 输出:[1, 4, 9, 16, 25] # 带条件的筛选 even_squares = [x**2 for x in range(10) if x % 2 == 0] print(even_squares) # 输出:[0, 4, 16, 36, 64] ``` #### 二、字典推导式(Dictionary Comprehensions) **语法格式**: $$\{ \text{键}: \text{值} \quad \text{for} \quad \text{变量} \quad \text{in} \quad \text{可迭代对象} \quad \text{if} \quad \text{条件} \}$$ **经典用例**: ```python # 创建数字平方字典 [^2] num_dict = {i: i**2 for i in range(1, 5)} print(num_dict) # 输出:{1: 1, 2: 4, 3: 9, 4: 16} # 合并两个列表为字典 [^1] keys = ['name', 'age', 'city'] values = ['Alice', 25, 'New York'] user_dict = {k: v for k, v in zip(keys, values)} print(user_dict) # 输出:{'name': 'Alice', 'age': 25, 'city': 'New York'} ``` #### 三、集合推导式(Set Comprehensions) **语法格式**: $$\{ \text{表达式} \quad \text{for} \quad \text{变量} \quad \text{in} \quad \text{可迭代对象} \quad \text{if} \quad \text{条件} \}$$ **使用示例**: ```python # 创建唯一平方数集合 unique_squares = {x**2 for x in [-3, -2, 1, 2, 3]} print(unique_squares) # 输出:{1, 4, 9} # 筛选字符串长度 words = {"apple", "banana", "cherry", "date"} long_words = {word for word in words if len(word) > 5} print(long_words) # 输出:{'banana', 'cherry'} ``` #### 四、嵌套推导式(Nested Comprehensions) **双层循环结构**: ```python # 矩阵转置 matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] transposed = [[row[i] for row in matrix] for i in range(3)] print(transposed) # 输出:[[1, 4, 7], [2, 5, 8], [3, 6, 9]] ``` ### 核心优势 1. **代码简洁性**:比传统`for`循环减少40-60%代码量 2. **执行效率**:比`append()`等操作快约1.5-2倍 3. **可读性**:符合Python的"扁平优于嵌套"哲学 > ⚠️ 注意:避免嵌套层级过深(建议≤2层),否则会降低可读性[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值