Python 推导式
前言
推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导,在Python2和3中都有支持:
- 列表(list)推导式
- 字典(dict)推导式
- 集合(set)推导式
列表(list)推导式
语法
out_express: 列表生成元素表达式,可以是有返回值的函数。 for out_exp in input_list: 迭代input_list将out_exp传入out_express表达式中。 condition: 条件表达式。 variable = [out_express for out_exp in input_list condition]
实例一:判断0-30列表元素被3整除
multiples = [i for i in range(30) if i % 3 is 0] print(multiples) # Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
字典(dict)推导式
语法
''' 语法一: key:字典中的key value:字典中的value dict.items():序列 condition:条件表达式 key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理 value_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理 ''' {key_exp:value_exp for key,value in dict.items() if condition} ''' 语法二: key:字典中的key value:字典中的value dict.items():序列 condition:条件表达式 key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理 value_exp1:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp1处理 value_exp2:在for循环中,如果条件表达式condition不成立(即条件表达式不成立),返回对应的key,value并作key_exp,value_exp2处理 ''' {key_exp:value_exp1 if condition else value_exp2 for key,value in dict.items()}
实例一:获取字典中key值是小写字母的键值对
dict1 = {"a":10,"B":20,"C":True,"D":"hello world","e":"python教程"} dict2 = {key:value for key,value in dict1.items() if key.islower()} print(dict2) # Output: {'a': 10, 'e': 'python教程'}
实例二:大小key合并
mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3} mcase_frequency = { k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0) for k in mcase.keys() if k.lower() in ['a','b'] } print mcase_frequency # Output: {'a': 17, 'b': 34}
集合(set)推导式
语法
out_express: 列表生成元素表达式,可以是有返回值的函数。 for out_exp in input: 迭代input将out_exp传入out_express表达式中。
out_exp: 迭代变量。
input: 可迭代对象,可以是列表,原则、字典、集合以及range区间。 condition: 条件表达式。 variable = {out_express for out_exp in input_list condition}
实例一:
squared = {x**2 for x in [1, 1, 2]} print(squared) # Output: set([1, 4])
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?