python - Python:在生成器的开头插入元素
问题描述
如果我有发电机,例如:
g = (i for i in range(10))
后来我想更新生成器,以便产生的第一个元素现在是其他一些元素,最“pythonic”的方法是什么?
显然,我可以定义一个基本的生成器扩展函数,例如:
def extend(generator, new_elements):
for element in new_elements:
yield element
for element in generator:
yield element
但我想知道这是否有必要,或者是否有更好的方法来做到这一点?
解决方案
你可以用itertools.chain
这个:
>>> from itertools import chain
>>> g = (i for i in range(10))
>>> list(chain(['a','b','c'], g))
['a', 'b', 'c', 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
推荐阅读
- java - Spring boot MVC:Spring boot 2.1.4 中无法识别 RequestMapping
- go - 为什么恐慌恢复 buf 大小为 64 << 10?
- javascript - 如何对表格进行分页并同时搜索所有内容?
- apache-nifi - 如何使用依赖项中的控制器服务 api
- java - 修改现有日期和结果将与 java 格式相同
- detox - 为什么排毒自动化工具比 Appium 和其他工具更快?
- amazon-web-services - 通过在胶水超时中循环数据帧来删除顶点
- javascript - 如何从正在返回的这个复杂响应中获取 url?
- c++ - 如何从工作中的 VC++ 项目中生成 DLL?
- css - 通过css更改显示顺序