首页 > 代码库 > 生成器
生成器
1.生成器
一个函数中需要有一个 yield
语句即可将其转换为一个生成器。 跟普通函数不同的是,生成器只能用于迭代操作。
>>> def countdown(n): ... print(‘Starting to count from‘, n) ... while n > 0: ... yield n ... n -= 1... print(‘Done!‘) ...>>> # Create the generator, notice no output appears>>> c = countdown(3)>>> c <generator object countdown at 0x1006a0af0>>>> # Run to first yield and emit a value>>> next(c) Starting to count from 33>>> # Run to the next yield>>> next(c)2>>> # Run to next yield>>> next(c)1>>> # Run to next yield (iteration stops)>>> next(c) Done! Traceback (most recent call last): File "<stdin>", line 1, in <module>StopIteration>>>
一个生成器函数主要特征是它只会回应在迭代中使用到的next
操作。 一旦生成器函数返回退出,迭代终止。我们在迭代中通常使用的for
语句会自动处理这些细节
yield from:For simple iterators,
yield from iterable
is essentially just a shortened form offor item in iterable: yield item
:
>>>>>> def g(x):... yield from range(x, 0, -1)... yield from range(x) ...>>> list(g(5))[5, 4, 3, 2, 1, 0, 1, 2, 3, 4]
2 itertools.chain()
itertools.chain()
接受一个或多个可迭代对象最为输入参数。 然后创建一个迭代器,依次连续的返回每个可迭代对象中的元素。
本文出自 “机制小风风” 博客,请务必保留此出处http://xiaofengfeng.blog.51cto.com/8193303/1885783
生成器
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。