生成器

任何包含yield语句的函数称为生成器。
它的行为和普通的函数有很大的差别,它不是像return那样返回值,而是每次产生
多个值。每次产生一个值(使用yield语句),函数就会被冻结:即函数停在那点等待
被激活。函数被激活后就从停止的那点开始执行。

例子:

def flatten(nested):
for sublist in nested:
for element in sublist:
yield element

nested = [[1,2], [3, 4], [5]]

print list(flatten(nested))


递归生成器:

# recursion yield example
def flatten2(nested):
try:
# Don't iteration of the string similar objects
try: nested + ''
except TypeError: pass
else: raise TypeError
for sublist in nested:
for element in flatten2(sublist):
yield element
except TypeError:
yield nested

print list(flatten2([[[1],2], 3, 4, [5, [6, 7]], 8]))

print list(flatten2(['foo', ['bar', ['baz']]]))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值