根据您要迭代的内容,有多个迭代器类:
>>> import re
>>> re.finditer("\d+", "1 ha 2 bah").__class__
<type 'callable-iterator'>
>>> iter([1, 2]).__class__
<type 'listiterator'>
>>> iter("hurm").__class__
<type 'iterator'>
Run Code Online (Sandbox Code Playgroud)
两个问题:
callable-iterator?你绝对不能称之为.作为迭代器意味着实现迭代器协议,而不是成为特定类的成员——迭代器就像迭代器一样。您可以编写自己的自定义迭代器类,它们不会是您列出的任何类。
从“作为迭代器”的角度来看,它们之间没有区别。它们都是迭代器,这仅仅意味着您可以迭代它们。当然可能还有其他差异——它们可能定义了额外的方法或行为——但作为迭代器和迭代器,它们是相同的。
您可以将迭代器视为某种“知道如何”迭代特定数据结构的小玩意。不同类型的数据结构可能有自己的自定义类来迭代它们;这些迭代器可能在幕后做不同的事情,但都共享相同的公共接口(迭代器协议)。
| 归档时间: |
|
| 查看次数: |
1028 次 |
| 最近记录: |