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

相关推荐

  1. python:深入理解生成器

    2023-12-15 16:24:04       36 阅读
  2. 生成器

    2023-12-15 16:24:04       14 阅读
  3. Python学习之-生成器

    2023-12-15 16:24:04       15 阅读
  4. C#语言(四) 枚举

    2023-12-15 16:24:04       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-15 16:24:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-15 16:24:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-15 16:24:04       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-15 16:24:04       20 阅读

热门阅读

  1. SpringBoot 源码解析

    2023-12-15 16:24:04       43 阅读
  2. 解决子组件没有渲染完出现的报错

    2023-12-15 16:24:04       39 阅读
  3. WordPress任务计划异步执行(WordPress后台速度优化

    2023-12-15 16:24:04       39 阅读
  4. Audio signal (MATLAB)代码学习-常见问题2

    2023-12-15 16:24:04       32 阅读
  5. 【Go语言分析 select case 】

    2023-12-15 16:24:04       39 阅读
  6. docker 安装mysql容器

    2023-12-15 16:24:04       36 阅读
  7. python中qt5的入门

    2023-12-15 16:24:04       38 阅读