gpt4 book ai didi

python - 我可以将迭代器内容中的 "splice"放入我自己的 Python 迭代器中吗?

转载 作者:行者123 更新时间:2023-11-28 22:05:33 25 4
gpt4 key购买 nike

假设我有一个迭代器,我想在它之前或之后添加一些元素。我能想到的唯一方法是使用显式循环:

def myiter(other_iter):
yield "First element"
for item in other_iter:
yield item
yield "Last element"

是否有更好或更有效的方法来做到这一点?是否有名称类似于 yield_items_from 的函数可以像这样使用?

def myiter(other_iter):
yield "First element"
yield_items_from(other_iter)
yield "Last element"

编辑:

好吧,我过度简化了我的例子。这是一个更好的:

假设我有一个迭代器 other_iter,它返回非负整数的升序序列。我想返回一个从零开始向上计数的迭代器,对于 other_iter 返回的数字返回 1,否则返回 0。例如,如果 other_iter 产生 [1,4,5,7],我想产生 [0,1,0,0,1,1,0,1]。有没有一种高效且可读的方法来做到这一点?

最佳答案

不,没有什么像yield_items_from ,尽管在 PEP 380 中有一份向 Python 3.X 添加一个的提案草案。 .

对于当前的 Python,显式循环是从子迭代器产生的唯一方法。但是,它的效率相当高,而且是惯用的方法,因此您不必为冗长而烦恼。

如果您需要做的只是将新项添加到迭代器的前面或后面,那么您可以简单地使用<a href="http://docs.python.org/library/itertools.html#itertools.chain" rel="noreferrer noopener nofollow">itertools.chain</a>。创建一个新的迭代器。您可以使用它将多个迭代器链接在一起,或者通过将它们包装在列表中来附加/前置单个项目。

new_iter = itertools.chain(['prefix item'], old_iter, appended_iter)

关于python - 我可以将迭代器内容中的 "splice"放入我自己的 Python 迭代器中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5094885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com