可迭代的对象

定义

可迭代对象是指可以使用迭代器(Iterator)进行遍历的对象。在 Python 中,可迭代对象是实现了 __iter__() 方法的对象,该方法返回一个迭代器对象,或者实现了 __getitem__() 方法并接受从 0 开始的整数索引。

示例

通过使用可迭代对象和迭代器,可以方便地遍历和处理序列中的元素,这在 Python 编程中是一种简洁和高效的方式。

my_list = [1, 2, 3, 4]
for item in my_list:
    print(item)

迭代器协议

my_list = [1, 2, 3]
iter_obj = iter(my_list)  # 等价于 my_list.__iter__()
print(next(iter_obj))  # 等价于 iter_obj.__next__(),输出 1
print(next(iter_obj))  # 输出 2
print(next(iter_obj))  # 输出 3
print(next(iter_obj))  # 抛出 StopIteration 异常

自定义可迭代对象

class MyIterable:
    def __init__(self):
        self.data = [1, 2, 3]

    def __iter__(self):
        self.index = 0
        return self

    def __next__(self):
        if self.index < len(self.data):
            result = self.data[self.index]
            self.index += 1
            return result
        else:
            raise StopIteration


my_iterable = MyIterable()
for item in my_iterable:
    print(item)

检查可迭代性

def is_iterable(obj):
    try:
        iter(obj)
        return True
    except TypeError:
        return False


print(is_iterable([1, 2, 3]))  # 输出 True
print(is_iterable(123))  # 输出 False