71、Python 生成器:功能、应用与特性解析

Python 生成器:功能、应用与特性解析

1. 生成器嵌套与简洁性

生成器嵌套可以任意混合和深入,但有些嵌套可能比其他的更有效。例如:

>>> list(map(abs, map(abs, map(abs, (−1, 0, 1)))))
[1, 0, 1]
>>> list(abs(x) for x in (abs(x) for x in (abs(x) for x in (−1, 0, 1))))
[1, 0, 1]

这些示例展示了生成器的通用性,但代码故意写得复杂,以强调生成器表达式和之前讨论的列表推导式一样,有被滥用的可能。通常,除非必要,应保持代码简单。

非嵌套的方法通常能提供更简单的解决方案,同时利用生成器的优势,遵循“扁平优于嵌套”的 Python 格言:

>>> list(abs(x) * 2 for x in (−1, −2, 3, 4))
[2, 4, 6, 8]
>>> list(math.sqrt(x ** 2) for x in range(4))
[0.0, 1.0, 2.0, 3.0]
>>> list(abs(x) for x in (−1, 0, 1))
[1, 0, 1]

2. 生成器表达式与 filter 函数对比

生成器表达式支持所有常见的列表推导式语法,包括 if 子句,其作用类似

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值