Python中有内置的迭代器吗?

mul*_*rse 2 python iterator built-in

我们有内置的可迭代对象,例如列表、元组和字典等。我们还可以通过__iter__在类中实现方法来创建我们自己的可迭代对象。我们还可以通过实现 an__iter__和 a__next__方法来实现迭代器对象,但是是否有像内置可迭代对象那样的内置迭代器?

Chr*_*nds 5

Python 3 中的以下返回builtin迭代器: 、、(当然)、和。enumerate()filter()iter()map()reversed()zip()

在 Python 中,还有很多返回迭代器的原生 Python 方法,例如 checkoutitertools模块(提示就在名称中!)。

然而,为了迂腐地回答你的问题,不,没有builtins迭代(我想不出一个好的用例),但正如tobias_k所说list(),其他人也不是可迭代的,只是返回


测试迭代器(而不是对象)存在于builtins(感谢FHTMitchell):

import builtins
import collections.abc

def isiteratorclass(obj):
    if not isinstance(obj, type):
        return False
    return issubclass(obj, collections.abc.Iterator)


[key for key, value in vars(builtins).items() if isiteratorclass(value)]
# --> ['enumerate', 'filter', 'map', 'reversed', 'zip']
Run Code Online (Sandbox Code Playgroud)

  • @tobias_k 如果我们要完全学究的话,“list”和“tuple”是其实例是可迭代的类;) (3认同)