可迭代对象通过iter(),转化为迭代器对象,迭代器可以使用next()访问,可迭代对象不能直接使用next();

可迭代对象(iterable):凡是具有__iter__的方法的类,都是可迭代的类。可迭代类创建的对象实现了__iter__方法,因此就是可迭代对象。用list、tuple等容器创建的对象,都是可迭代对象。下面两个例子:

Eg1:

my_list = [1, 2, 3]
for item in my_list: # 可迭代对象
    print(item)  # 输出:1 2 3

Eg2

for i, item in enumerate([1, 2, 3]): # 迭代器对象
    print(f'index: {i}, item: {item}')

这里就产生了一个疑问?为什么Eg1 for遍历的是一个iterable,Eg2 for遍历的是一个iterator

解答:for循环的工作机制

总结:

For循环深层还是对迭代器进行遍历,只不过会自动的可迭代对象转换为迭代器。

参考目录:

Python中的可迭代对象、迭代器、For循环工作机制、生成器 - 个人文章 - SegmentFault 思否

Python3 迭代器与生成器 | 菜鸟教程 (runoob.com)

发表回复