菜鸟教程《Python 3 教程》笔记(12):推导式

菜鸟教程《Python 3 教程》笔记(12)

  • [12 推导式](#12 推导式)
    • [12.1 列表推导式](#12.1 列表推导式)
    • [12.2 字典推导式](#12.2 字典推导式)
    • [12.3 集合推导式](#12.3 集合推导式)
    • [12.4 元组推导式(生成器表达式)](#12.4 元组推导式(生成器表达式))

笔记带有个人侧重点,不追求面面俱到。

12 推导式

出处: 菜鸟教程 - Python3 推导式

12.1 列表推导式

python 复制代码
"""
格式 1:简单生成列表
[<expression> for <item> in <iterable>]
"""
>>> [i**2 for i in range(5)]
[0, 1, 4, 9, 16]

"""
格式 2:条件生成列表
[<expression> for <item> in <iterable> if <condition>]
"""
>>> [i for i in range(5) if i % 2 == 0]
[0, 2, 4]

"""
格式 3:条件生成列表
[<expression1> if <condition> else <expression2> for <item> in <iterable>]
"""
>>> list1 = [1, 2, 3, 4, 5]
>>> [1 if i > 3 else 0 for i in list1]
[0, 0, 0, 1, 1]

"""
格式 4:多条件生成列表
[<expression1> if <condition1> else <expression2> if <condition2> else <expression3> for <item> in <iterable>]
"""

"""
格式 5:多重循环
[<expression> for <item1> in <iterable1> for <item2> in <iterable2>]

[<expression> for <item1> in <iterable1> for <item2> in <item1>]
"""
>>> [i * j for i in range(5) for j in "ab"]
['', '', 'a', 'b', 'aa', 'bb', 'aaa', 'bbb', 'aaaa', 'bbbb']

>>> list1 = [[1, 2], [3, 4]]
>>> [j for item in list1 for j in item]
[1, 2, 3, 4]

"""
格式 6:嵌套列表
[[<expression> for <item2> in <iterable2>] for <item1> in <iterable1>]
"""
>>> [[i * j for j in "ab"] for i in range(3)]
[['', ''], ['a', 'b'], ['aa', 'bb']]

扩展阅读: Python 中的列表推导式

12.2 字典推导式

python 复制代码
"""
格式 1:简单生成
{<key_expr>: <value_expr> for <item> in <iterable>}
"""
>>> listdemo = ['Google','Runoob', 'Taobao']
>>> {key: len(key) for key in listdemo}
{'Google': 6, 'Runoob': 6, 'Taobao': 6}

"""
格式 2:条件生成
{<key_expr>: <value_expr> for <item> in <iterable> if <condition>}
"""
>>> {i: i**2 for i in range(5) if i % 2 == 0}
{0: 0, 2: 4, 4: 16}

12.3 集合推导式

参考 12.1 列表推导式,将 [] 替换为 {}

12.4 元组推导式(生成器表达式)

注意: 元组推导式返回的结果是一个生成器对象。

python 复制代码
>>> a = (x for x in range(1,10))
>>> a
<generator object <genexpr> at 0x7faf6ee20a50>  # 返回的是生成器对象

>>> tuple(a)       # 使用 tuple() 函数,可以直接将生成器对象转换成元组
(1, 2, 3, 4, 5, 6, 7, 8, 9)
相关推荐
程序员三藏36 分钟前
Web自动化测试详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
在放️1 小时前
Python 爬虫 · 第三方代理接入与合规使用
开发语言·爬虫·python
财经资讯数据_灵砚智能2 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(夜间-次晨)2026年6月14日
大数据·人工智能·python·ai·信息可视化·自然语言处理·灵砚智能
影视飓风TIM2 小时前
数据结构 | 链表超全笔记(单链表+双链表+高频算法题)
数据结构·笔记·链表
二哈赛车手2 小时前
新人笔记---最终版智能体图片分析完整方案,包括一些总结于经验,以及各种优化点讲解
java·笔记·spring·ai·springboot
_李小白2 小时前
【智能驾驶:视觉感知后处理 阅读笔记】Day4: 相机成像模型与畸变
笔记·数码相机
十月的皮皮2 小时前
C语言学习笔记20260615-有序升序序列合并
c语言·笔记·学习
JOJO数据科学4 小时前
JupyterLab Electron 鸿蒙 PC 适配全记录:从 Python 原生崩溃到 node-static 本地工作台
python·electron·harmonyos
xufengzhu4 小时前
第三方 Python 库 redis-py + hiredis 的使用
开发语言·redis·python
llxxyy卢5 小时前
polar夏季赛部分题目
开发语言·python