python进阶:深入理解迭代器和生成器

一、容器、可迭代对象和迭代器

1、容器

  • python中一切皆对象,对象的抽象就是类,而对象的集合就是容器。列表(list:[0,1,2]),元组(tuple:(0,1,2)),字典(
    dict:{0:0,1:1,2:2}),集合(set:set([0,1,2]))都是容器
  • 容器可以简单理解为多个元素在一起的单元,不同容器的区别就是内部数据结构的实现方法

2、可迭代对象

  • 所有的容器都是可迭代的,也就是可迭代对象,可迭代可以想象成买苹果,卖家并不会告诉你有多少库存,每次你告诉卖家你要一个苹果,然后卖家采取行为;要么给你一个苹果,要么告诉你,苹果已经卖完了,你并不需要知道,卖家仓库是怎么摆放苹果的

3、迭代器

  • 迭代器(iterator)提供了一个next的方法。调用这个方法后,要么得到容器的下一个对象,要么得到一个Stopiteration的错误(苹果卖完了)
  • 可迭代对象并不等于迭代器,可迭代对象通过iter()函数返回一个迭代器,再通过next()函数就可以实现遍历。我们常用的for循环将这个过程隐式化了
l1 = [1,2,3,4]
print(next(l1))

上述代码会报错:TypeError:‘list’ object is not an iterator,因为l1只是一个可迭代对象,并没有返回迭代器

l1 = [1,2,3,4]
l2 = iter(l1)
print(l2)
print(
  • 25
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我爱夜来香A

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值