【Python教程】迭代器
【Python教程】迭代器
gh_1d7504e4dee1
回复:python,领取Python面试题。分享Python教程,Python架构师教程,Python爬虫,Python编程视频,Python脚本,Pycharm教程,Python微服务架构,Python分布式架构,Pycharm注册码。
整理:python架构师
在介绍迭代器之前,先说明下迭代的概念:
迭代 :通过for循环遍历对象的每一个元素的过程。
Python的for语法功能非常强大,可以遍历任何可迭代的对象。
在Python中,list/tuple/string/dict/set/bytes都是可以迭代的数据类型。
可以通过collections模块的Iterable类型来判断一个对象是否可迭代:
>>>
from
collections
import
Iterable
>>>
isinstance(
’abc’
, Iterable)
# str是否可迭代
True
>>>
isinstance([
1
,
2
,
3
], Iterable)
# list是否可迭代
True
>>>
isinstance(
123
, Iterable)
# 整数是否可迭代
False
点击领取Python面试题手册
Python从入门到进阶知识手册
迭代器
迭代器是一种可以被遍历的对象,并且能作用于next()函数。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往后遍历不能回溯,不像列表,你随时可以取后面的数据,也可以返回头取前面的数据。迭代器通常要实现两个基本的方法:iter() 和 next()。
字符串,列表或元组对象,甚至自定义对象都可用于创建迭代器:
>>
> lis=[
1
,
2
,
3
,
4
]>>> it = iter(lis)
# 使用Python内置的iter()方法创建迭代器对象
>>
> next(it)
# 使用next()方法获取迭代器的下一个元素
1
>>
> next(it)
2
>>
> next(it)
3
>>
> next(it)
4
>>
> next(it)
# 当后面没有元素可以next的时候,弹出错误
Traceback (most recent call last):
File
"<pyshell#6>"
, line
1
,
in
<
module
>
next
(it)
StopIteration
或者使用for循环遍历迭代器:
lis = [1,2,3,4]it = iter(lis)
# 创建迭代器对象
for
x
in
it:
# 使用for循环遍历迭代对象
print
(x, end=
" "
)
很多时候,为了让我们自己写的类成为一个迭代器,需要在类里实现__iter__()和__next__()方法。
总结:Python的迭代器表示的是一个元素流,可以被next()函数调用并不断返回下一个元素,直到没有元素时抛出StopIteration错误。可以把这个元素流看做是一个有序序列,但却不能提前知道序列的长度,只能不断通过next()函数得到下一个元素,所以迭代器可以节省内存和空间。
迭代器(Iterator)和可迭代(Iterable)的区别:
凡是可作用于for循环的对象都是可迭代类型;
凡是可作用于next()函数的对象都是迭代器类型;
-
list、dict、str等是可迭代的但不是迭代器,因为next()函数无法调用它们。可以通过iter()函数将它们转换成迭代器。
Python的for循环本质上就是通过不断调用next()函数实现的。
程序员技术交流群
扫码进群记得备注: 城市、昵称和技术方向 。
阅读更多
-
离谱!两高中生用AI生成luo照,疯狂「变现」
-
【Python教程】推导式
-
用 Python 高效处理大文件
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
