Python 解压迭代器

Zhe*_*Lin 8 python iterator

我知道*Python中的运算符用于解包可迭代对象,例如解包列表。

不过,在实践中,我们也使用*operator来解包迭代器,但我还没有找到解释它的文档。

参见示例:

>>> a = [1,2,3]
>>> print(a)
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

解压可迭代的

>>> print(*a)
1,2,3
Run Code Online (Sandbox Code Playgroud)

解压迭代器

>>> it = iter(a)
>>> print(*it)
1,2,3
Run Code Online (Sandbox Code Playgroud)

Sne*_*tel 2

这是有效的iter,因为 应用于迭代器会返回相同的迭代器:

iterator.__iter__()
返回迭代器对象本身。这是允许容器和迭代器与 for 和 in 语句一起使用所必需的。该方法对应于Python/C API中Python对象类型结构的tp_iter槽。

在表达式列表中使用对象已经导致迭代器的创建。假设迭代器/迭代器协议已正确实现,则func(*iter(foo))与 具有相同的效果。func(*foo)