• 列表不论遍历多少次,表头位置始终是第一个元素;
  • 迭代器遍历结束后,不再指向原来的表头位置,而是为最后元素的下一个位置。

通过 type 关键字可以看到列表和迭代器的类型是不同的。

In [1]: a = [1,2,3]In [2]: b = iter(a)In [3]: type(a)
Out[3]: listIn [4]: type(b)
Out[4]: list_iterator

通过 for 循环迭代列表和迭代器,可以发现,列表每次迭代都是从第一个元素开始,而迭代器在迭代结束后再次迭代就不会有任何值。因为一旦迭代结束,就指向迭代器最后一个元素的下一个位置。

In [6]: for i in a:...:     print(i)...:
1
2
3In [7]: for j in b:...:     print(j)...:
1
2
3In [8]: for i in a:...:     print(i)...:
1
2
3In [9]: for j in b:...:     print(j)...:     In [10]:

只有迭代器对象才能与内置函数 next 结合使用, next 一次,迭代器就前进一次,指向一个新的元素。
所以,要想迭代器 b 重新指向 a 的表头,需要重新创建一个新的迭代器。

In [10]: b = iter(a)In [11]: next(b)
Out[11]: 1In [12]: next(b)
Out[12]: 2In [13]: next(b)
Out[13]: 3In [14]: next(b)
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
<ipython-input-14-adb3e17b0219> in <module>
----> 1 next(b)StopIteration: In [15]:

需要注意,我们无法通过调用 len 获得迭代器的长度,只能迭代到最后一个末尾元素时,才知道其长度。

总结:遍历列表,表头位置始终不变;遍历迭代器,表头位置相应改变; next 函数执行一次,迭代对象指向就前进一次; StopIteration 触发时,意味着已到迭代器尾部

Python 列表和迭代器区别相关推荐

  1. python生成器和迭代器区别_生成器、迭代器的区别?

    迭代器是一个更抽象的概念,任何对象,如果它的类有 next 方法和 iter 方法返回自己本身,对于 string.list. dict.tuple 等这类容器对象,使用 for 循环遍历是很方便的. ...

  2. python生成器和迭代器区别

    一.迭代器/生成器基本概念 1.1 什么是迭代器 迭代器(Iterator) 是同时实现__iter__() 与 __next__() 方法的对象. 1.2 什么是生成器 Python 中,提供了两种 ...

  3. python列表和数组区别java_Python列表与Java数组效率

    我来自Java,正在努力学习Python.我首先在Java中实现了Sieve of Eratosthenes算法,然后在Python中实现了.我的Java实现运行得相当快,我可以在大约25秒内找到10 ...

  4. python列表字典的区别_python列表和字典区别

    列表 1.任意对象的有序集合 列表是一组任意类型的值,按照一定顺序组合而成的 2.通过偏移读取 组成列表的值叫做元素(Elements).每一个元素被标识一个索引,第一个索引是0,序列的功能都能实现 ...

  5. python列表和数组区别java_浅谈numpy中np.array()与np.asarray的区别以及.tolist

    array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会. 1.输入为列表时 ...

  6. 详解 Python 生成器与迭代器 及其区别

    前言 不论是初学python还是python进阶,这都是绕不开的知识点,生成器与迭代器的概念相较于其他基础概念显得晦涩难懂,知识点囊括很多方面,查阅越多的资料,头就越大,现在这加以理解归纳总结. 相关 ...

  7. python list的extend (会将被插入的列表的每个元素从列表中拿出添加到列表中)与append方法(若被插入为列表,会将列表插入到源列表中)区别

    python list的extend (会将被插入的列表的每个元素从列表中拿出添加到列表中)与append方法(若被插入为列表,会将列表插入到源列表中)区别 Python--list的extend() ...

  8. Python列表,元组,字典的区别

    Python列表,元组,字典的区别: 1.元组是不可变的, 而列表.字典是可变的.元组是不可变对象,对象一旦生成,它的值将不能更改:列表是可变对象,对象生成后,可以对其元素进行更改.添加.删除.清空. ...

  9. 轻松搞懂python列表list 和numpy.array数组的区别

    文章目录 1.列表 2.数组(array) 3.程序举例 3.1 创建 3.2 元素访问 3.2.1一维数组.列表访问 3.2.2 二维数组.列表访问 3.3 浅拷贝与深拷贝 1.列表 list是处理 ...

最新文章

  1. 基于Vue的事件响应式进度条组件
  2. sysfs方式控制GPIO
  3. linux 如何让.开头的文件不隐藏_如何使用 BusyBox 制作Linux最小文件系统
  4. java的构造函数格式_来自模板化对象的Java 8函数构造函数
  5. 基于LINQ to SQL的WEB开发三层架构(1)
  6. 18-elasticsearch集群健康为黄色
  7. pop3通过时间或者条件取邮件_Python 进阶(三):邮件的发送与收取
  8. 如何注册Spring Bean
  9. 工作七年,从实习生到测试主管,我认识到倾听对一个人有多重要!
  10. 架构之美 | 按图索骥,就能做好架构图!
  11. 永恒之蓝漏洞紧急应对方案
  12. pr剪辑打开多个项目_写给后期剪辑新手的PR软件基础操作全流程指南
  13. 谈谈我对软件工程专业的理解
  14. 给路由器刷 padavan 改造家庭无线网络
  15. 用python写一个PDF翻译软件
  16. Monaco-Editor 多人协作 编辑器
  17. Cadence Allegro 如何制作表贴焊盘
  18. SDN控制器OpenDaylight简介
  19. 拓扑排序- 基本思路
  20. 2022中国制造业行业研究报告:(现状、驱动因素、外流现象、发展趋势)27页可下载

热门文章

  1. 2022-2028年中国HDPE膜行业市场研究及投资发展分析报告
  2. 剑指offer 40.最小的 K 个数 python代码
  3. How does SGD weight_decay work?
  4. react非常适合入门者学习使用的后台管理框架
  5. GitHub无法显示图片问题解决
  6. NCHW与NHWC格式
  7. AI基础架构Pass Infrastructure
  8. 自动驾驶解决方案架构
  9. 2021年大数据Flink(四十五):​​​​​​扩展阅读 双流Join
  10. 怎么卸载云骑士装机大师