Python中的iterator 和 iterable

首先,可以从字面意思上看出,iterator是名词--迭代器,iterable是形容词--可迭代的(XXX)。这样是不是就好理解了。

接下来,具体研究,到底怎么用。

对于一个数据类型,可以使用Iterator判断是不是迭代器,使用Iterable判断是不是可迭代的。

from collections.abc import Iterator, Iterable

# isinstance(XXX, Iterable)判断XXX是否可迭代
print(isinstance([1, 2, 3], Iterable))
print(isinstance((1, 2, 3), Iterable))
print(isinstance(123, Iterable))

# isinstance(XXX, Iterator)判断XXX是否为迭代器
print(isinstance([1, 2, 3], Iterator))
print(isinstance((), Iterator))
print(isinstance((x for x in range(10)), Iterator))

结果为:

list、truple、str、dic等是可迭代,但他们并不是迭代器。而不确定要循环迭代多少次,每调用一次next()都可以进行下一步,具有惰性的,这样理解为迭代器。

集合数据类型如list,truple,dict等属于Iterable不是Iterator,但他们都可以通过iter()函数获得一个Iterator对象。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值