Python 迭代器

一、迭代器基础概念:
迭代器是一种支持next()操作的对象。它包含了一组元素,当执行next()操作时,返回其中一个元素。
当所有元素都被返回后,再执行next()报异常—StopIteration
迭代器是一个可以记住遍历的位置的对象;
迭代器对象从集合的第一个元素开始访问,直到所有元素访问完成之后才结束;
迭代器只能往前不能后退;
迭代是访问集合元素的一种方式

二、可迭代对象与迭代器对象的区别:
(1)可迭代对象:

以直接作用于for循环的数据类型:
(1)容器:list\tuple\dict\set\str
(2)生成器
eg:
from collections import Iterable
#可以使用isinstance()判断一个对象是否可迭代:
print(isinstance([],Iterable))#True
print(isinstance((),Iterable))#True
print(isinstance({},Iterable))#True
print(isinstance(‘liulidong’,Iterable))#True
print(isinstance((i for i in range(1,10,2)),Iterable))#True

直接作用于for循环的对象统称为可迭代对象:Iterable,'able’结尾表示“具备…能力”

(2)迭代器:
可以被next()函数调用并不断返回下一个值 的对象称为~;Iterator
eg:
from collections import Iterator
print(isinstance([],Iterator))#False
print(isinstance((),Iterator))#False
print(isinstance({},Iterator))#False
print(isinstance(‘shijiedayupangbo’,Iterator))#False
print(isinstance((i for i in range(1,10,2)),Iterator))#True
小结:
可迭代的对象不一定是迭代器对象
(1)凡是可作用于for循环的对象都是Iterable
(2)凡是可作用于next()函数的对象都是Iterator
(3)容器类型(list\tuple\dict\str\set),是可迭代的,但不是迭代器对象。但是通过iter()函数获得一个迭代器对象

三、将容器类型转换成迭代器----.iter()

list1 = [1,2,3,4]
#使用迭代器访问容器类型元素
#方法1:
G = list1.iter()
for i in range(len(list1)):

print(next(list1))#报错

print(next(G))

#方法2:
list1_iter = iter(list1)
print(list1_iter)#<list_iterator object at 0x00000000029BEA90>
for i in range(len(list1)):
print(next(list1_iter))

四.聚合函数
很多常用操作也是支持迭代器,例如:sum(),max()
print(‘累加和:’,sum(list1_iter))

五、迭代器的好处:
1.减少内存消耗
比如,我在读文件时,这个文件可能有很多行(文件太大,一次加载到内存中,容易造成内存溢出)
解决方案:我们需要一部分一部加载文件的内容
i = 0
for text_line in open(‘语言基础面试知识点整理.txt’):
print(text_line)
i+=1
if i==10:
break

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值