Python 列表和迭代器区别
- 列表不论遍历多少次,表头位置始终是第一个元素;
- 迭代器遍历结束后,不再指向原来的表头位置,而是为最后元素的下一个位置。
通过 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 列表和迭代器区别相关推荐
- python生成器和迭代器区别_生成器、迭代器的区别?
迭代器是一个更抽象的概念,任何对象,如果它的类有 next 方法和 iter 方法返回自己本身,对于 string.list. dict.tuple 等这类容器对象,使用 for 循环遍历是很方便的. ...
- python生成器和迭代器区别
一.迭代器/生成器基本概念 1.1 什么是迭代器 迭代器(Iterator) 是同时实现__iter__() 与 __next__() 方法的对象. 1.2 什么是生成器 Python 中,提供了两种 ...
- python列表和数组区别java_Python列表与Java数组效率
我来自Java,正在努力学习Python.我首先在Java中实现了Sieve of Eratosthenes算法,然后在Python中实现了.我的Java实现运行得相当快,我可以在大约25秒内找到10 ...
- python列表字典的区别_python列表和字典区别
列表 1.任意对象的有序集合 列表是一组任意类型的值,按照一定顺序组合而成的 2.通过偏移读取 组成列表的值叫做元素(Elements).每一个元素被标识一个索引,第一个索引是0,序列的功能都能实现 ...
- python列表和数组区别java_浅谈numpy中np.array()与np.asarray的区别以及.tolist
array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会. 1.输入为列表时 ...
- 详解 Python 生成器与迭代器 及其区别
前言 不论是初学python还是python进阶,这都是绕不开的知识点,生成器与迭代器的概念相较于其他基础概念显得晦涩难懂,知识点囊括很多方面,查阅越多的资料,头就越大,现在这加以理解归纳总结. 相关 ...
- python list的extend (会将被插入的列表的每个元素从列表中拿出添加到列表中)与append方法(若被插入为列表,会将列表插入到源列表中)区别
python list的extend (会将被插入的列表的每个元素从列表中拿出添加到列表中)与append方法(若被插入为列表,会将列表插入到源列表中)区别 Python--list的extend() ...
- Python列表,元组,字典的区别
Python列表,元组,字典的区别: 1.元组是不可变的, 而列表.字典是可变的.元组是不可变对象,对象一旦生成,它的值将不能更改:列表是可变对象,对象生成后,可以对其元素进行更改.添加.删除.清空. ...
- 轻松搞懂python列表list 和numpy.array数组的区别
文章目录 1.列表 2.数组(array) 3.程序举例 3.1 创建 3.2 元素访问 3.2.1一维数组.列表访问 3.2.2 二维数组.列表访问 3.3 浅拷贝与深拷贝 1.列表 list是处理 ...
最新文章
- 基于Vue的事件响应式进度条组件
- sysfs方式控制GPIO
- linux 如何让.开头的文件不隐藏_如何使用 BusyBox 制作Linux最小文件系统
- java的构造函数格式_来自模板化对象的Java 8函数构造函数
- 基于LINQ to SQL的WEB开发三层架构(1)
- 18-elasticsearch集群健康为黄色
- pop3通过时间或者条件取邮件_Python 进阶(三):邮件的发送与收取
- 如何注册Spring Bean
- 工作七年,从实习生到测试主管,我认识到倾听对一个人有多重要!
- 架构之美 | 按图索骥,就能做好架构图!
- 永恒之蓝漏洞紧急应对方案
- pr剪辑打开多个项目_写给后期剪辑新手的PR软件基础操作全流程指南
- 谈谈我对软件工程专业的理解
- 给路由器刷 padavan 改造家庭无线网络
- 用python写一个PDF翻译软件
- Monaco-Editor 多人协作 编辑器
- Cadence Allegro 如何制作表贴焊盘
- SDN控制器OpenDaylight简介
- 拓扑排序- 基本思路
- 2022中国制造业行业研究报告:(现状、驱动因素、外流现象、发展趋势)27页可下载
热门文章
- 2022-2028年中国HDPE膜行业市场研究及投资发展分析报告
- 剑指offer 40.最小的 K 个数 python代码
- How does SGD weight_decay work?
- react非常适合入门者学习使用的后台管理框架
- GitHub无法显示图片问题解决
- NCHW与NHWC格式
- AI基础架构Pass Infrastructure
- 自动驾驶解决方案架构
- 2021年大数据Flink(四十五):​​​​​​扩展阅读 双流Join
- 怎么卸载云骑士装机大师