Python中推导式
Python推导式是通过简洁语法快速创建数据结构的表达式,包含列表、字典、集合和生成器四种类型,能显著提升代码效率和可读性。
推导式核心结构与分类
Python推导式通过[表达式 for 变量 in 可迭代对象]
的基础结构实现数据转换,根据目标数据结构可分为三种主要类型:
- 列表推导式:生成新列表,例如
[x**2 for x in range(5)]
生成平方数列表。 - 字典推导式:通过键值对构建字典,如
{x: x**2 for x in range(5)}
生成数值与平方的映射。 - 集合推导式:生成无序不重复集合,如
{x%3 for x in range(10)}
得到余数集合。 - 元组推导式:
元组推导式可以利用 range 区间、元组、列表、字典和集合等数据类型,快速生成一个满足指定需求的元组。
元组推导式基本格式:
(expression for item in Sequence )或(expression for item in Sequence if conditional )
元组推导式和列表推导式的用法也完全相同,只是元组推导式是用 () 圆括号将各部分括起来,而列表推导式用的是中括号 [] ,另外元组推导式返回的结果是一个生成器对象。
高级用法与优化
条件筛选
通过if
子句过滤元素,例如[x for x in range(10) if x%2==0]
筛选偶数,或用三元表达式['even' if x%2==0 else 'odd' for x in range(5)]
条件赋值56
嵌套循环
支持多层循环生成笛卡尔积,如[(x,y) for x in 'AB' for y in '123']
生成坐标组合78
性能优势
相比传统for
循环,列表推导式执行速度提升约30%(千万级数据测试结果),且语法更简洁直观67
使用注意事项
- 可读性原则:嵌套层数建议不超过3层,避免过度复杂。
- 内存管理:处理大规模数据时建议使用生成器表达式
()
替代列表推导式`` - 兼容性要求:推导式语法需Python 2.7+版本支持完整特性。
https://blog.csdn.net/langb2014/article/details/53156032