我想从迭代器创建set、list 等。不幸的是,它们的构造函数需要一个可迭代对象而不是迭代器。我不想创建一个很快就会被丢弃的可迭代对象。
当然,我可以简单地使用 list 或 set comprehension,它们可以精确地完成我想要的(甚至更多)。然而,它们的语法是特殊的。所以当我尝试编写一个函数时:
def create_from_gen(container_type, generator):
return container_type(generator)
我卡住了。对于用户定义的容器,我当然可以定义自己的构造函数;对于库和内置类型,我别无选择。我可以检查 list 和 set,并使用我想的特殊语法,但这很丑陋。
请您参考如下方法:
迭代器也是一个可迭代对象。它应该总是有一个返回自身的 __iter__ 方法。这是 the specification for iterators 的一部分在 Python 中。
所以只需将迭代器传递给 list 或 set 构造函数,它应该可以正常工作。
