Python 中什么是可迭代对象 (iterable)?

推荐答案

在 Python 中,可迭代对象(iterable)是指实现了 __iter__() 方法或 __getitem__() 方法的对象。可迭代对象可以通过 for 循环进行遍历,或者通过 iter() 函数转换为迭代器(iterator)。常见的可迭代对象包括列表(list)、元组(tuple)、字符串(str)、字典(dict)、集合(set)等。

本题详细解读

什么是可迭代对象?

可迭代对象是指那些可以被遍历的对象。在 Python 中,可迭代对象必须实现 __iter__() 方法,或者实现 __getitem__() 方法并且能够从索引 0 开始顺序访问元素。__iter__() 方法返回一个迭代器对象,而 __getitem__() 方法允许对象通过索引访问元素。

可迭代对象的例子

以下是一些常见的可迭代对象的例子:

  • 列表(list): [1, 2, 3, 4]
  • 元组(tuple): (1, 2, 3, 4)
  • 字符串(str): "hello"
  • 字典(dict): {'a': 1, 'b': 2}
  • 集合(set): {1, 2, 3, 4}

可迭代对象与迭代器的区别

虽然可迭代对象和迭代器经常被混淆,但它们是有区别的。可迭代对象是实现了 __iter__() 方法的对象,而迭代器是实现了 __iter__()__next__() 方法的对象。迭代器是可迭代对象的一种,但可迭代对象不一定是迭代器。

如何判断一个对象是否是可迭代对象?

可以使用 isinstance() 函数和 collections.abc.Iterable 来判断一个对象是否是可迭代对象:

可迭代对象的遍历

可迭代对象可以通过 for 循环进行遍历:

可迭代对象转换为迭代器

可以使用 iter() 函数将可迭代对象转换为迭代器:

自定义可迭代对象

可以通过实现 __iter__() 方法来创建自定义的可迭代对象:

-- -------------------- ---- -------
----- -----------
    --- -------------- ------
        --------- - ----

    --- ---------------
        ------ ---------------

----------- - -------------- -- -- ---
--- ---- -- ------------
    -----------

在这个例子中,MyIterable 类实现了 __iter__() 方法,因此它是一个可迭代对象。

纠错
反馈