【发布时间】:2021-11-20 23:57:12
【问题描述】:
我的理解是 容器 是包含其他对象并且可以迭代的对象。
我们也可以说tuple、list、set、dict 是内置容器的示例。
请帮助我了解以下 iterable 是否是容器:
iter(lambda: random.choice(range(4)), 0)
上面的对象包含其他对象,也可以迭代,所以应该是一个容器。
【问题讨论】:
-
你可以争辩说那个东西“拥有其他对象”,但它可以说拥有的对象不是通过迭代它产生的对象。
-
这是一个迭代器。所有生成器都是迭代器,但并非所有迭代器都是生成器。你认为迭代器持有哪些对象?
-
这似乎是一个语义论据,但我会说容器是implements
__contains__()的任何对象,它允许你问if some_thing in some_container:如果你同意这个定义,很多事情都可以不迭代其成员的容器。例如,考虑一个“包含”其中所有点的Circle类。
标签: python containers generator terminology