Python——关于生成器generator的理解

本文详细介绍了Python生成器的概念,包括其特征、创建方法、与普通函数的区别、如何处理return返回值以及递归式生成器。通过具体的应用案例如杨辉三角和八皇后回溯问题,阐述了生成器在解决实际问题中的应用。
摘要由CSDN通过智能技术生成

生成器(generator)

1. 简单生成器

# 列表推导
>>> [x * x for x in range(10) if x % 3 == 0]
[0, 9, 36, 81]

# 字典推导
>>> {i: "{} squared is {}".format(i, i**2) for i in range(5)}
{0: '0 squared is 0', 1: '1 squared is 1', 2: '2 squared is 4', 3: '3 squared is 9', 4: '4 squared is 16'}

# 生成器推导(即生成器表达式)
# 注意:没有元组的推导
>>> g = (i**2 for i in range(2, 10))
>>> type(g)
<class 'generator'>
>>> next(g)
4
>>> list(g)
[9, 16, 25, 36, 49, 64, 81]

# 当计算到最后一个元素时,再向下计算会抛出异常
>>> g = (i for i in range(2))
>>> next(g);next(g)
0
1
>>> next(g);next(g)
StopIteration

# 采用for语句迭代就不用担心会跑出异常(或转化为list)
>>> g = (x*x for x in range(3))
>>> for n in g:
... 	print(n)
...
0
1
4

2. 创建生成器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值