python 迭代器

本文详细介绍了Python中迭代器(Iterator)和可迭代(Iterable)对象的概念,包括它们的区别与联系,如何使用isinstance()判断对象类型,以及如何通过iter()函数将Iterable转换为Iterator。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

迭代器(Iterator)

迭代器是⼀个可以记住遍历的位置的对象。 迭代器对象从集合的第⼀个元素开始访问, 直到所有的元素被访问完结束。 迭代器只能往前不会后退。

可迭代( Iterable)对象

可以直接⽤于 for 循环的数据类型有以下⼏种:
⼀类是 list 、 tuple 、 dict 、 set 、 str 等;
⼀类是 generator。
这些可以直接作⽤于 for 循环的对象统称为可迭代对象: Iterable

判断是否可以迭代

可以使⽤ isinstance() 判断⼀个对象是否是 Iterable 对象:

In [1]: from collections import Iterable
In [2]: isinstance([], Iterable)
Out[2]: True
In [3]: isinstance('abcedfg', Iterable)
Out[3]: True

迭代器(Iterator)

可以被next()函数调⽤并不断返回下⼀个值的对象称为迭代器: Iterator。
可以使⽤ isinstance() 判断⼀个对象是否是 Iterator 对象

In [4]: from collections import Iterator
In [5]: isinstance([], Iterator)
Out[5]: False
In [6]: isinstance((x for x in range(5)), Iterator)
Out[6]: True

iter()函数

⽣成器都是 Iterator 对象, 但 list 、 dict 、 str 虽然是 Iterable , 却不是
Iterator 。
iter()函数可以把 list 、 dict 、 str 等 Iterable 变成 Iterator。

In [7]: isinstance(iter([]), Iterator)
Out[7]: True

总结

  • 凡是可⽤于 for 循环的对象都是 Iterable 类型;
  • 凡是可作⽤于 next() 函数的对象都是 Iterator 类型
  • list 、 dict 、 str 等是 Iterable 但不是 Iterator , 不过可以通过 iter() 函数转化为 Iterator 对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值