假设我有一个迭代器,我想在它之前或之后添加一些元素。我能想到的唯一方法是使用显式循环:
def myiter(other_iter):
yield "First element"
for item in other_iter:
yield item
yield "Last element"
有没有更好或更有效的方法来做到这一点?有没有一个名为yield_items_from
的函数可以这样使用?在
好吧,我把我的例子简单化了。这里有一个更好的方法:
假设我有一个迭代器,它返回一个非负整数的升序序列。我想返回一个从零开始计数的迭代器,对于其他字节返回的数字返回1,否则返回0。例如,如果其他函数的结果是[1,4,5,7],我希望得到[0,1,0,0,1,1,0,1]。有没有一种有效且易读的方法来做到这一点?在
要回答您的新问题:
我很确定没有内置或助手可以做到这一点。在
不,没有什么能像
yield_items_from
,尽管有一个草案建议在PEP 380中向python3.X添加一个。在对于当前的Python,显式循环是从子迭代器生成的唯一方法。不过,这是相当有效的,而且这是惯用的方法,所以你不应该被冗长的内容所困扰。在
如果您只需要在迭代器的前面或后面添加新项,那么您只需使用
itertools.chain
来创建一个新的迭代器。您可以使用它将多个迭代器链接在一起,或者通过将单个项包装在列表中来附加/前置单个项。在使用itertools.chain:
关于编辑后的问题,请回答:
^{pr2}$相关问题 更多 >
编程相关推荐