Skip to main content
 首页 » 编程设计

python之从迭代器创建容器

2025年05月04日14shihaiming

我想从迭代器创建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 构造函数,它应该可以正常工作。