6.迭代器
比如for循环了1亿次,我用不了那么多数据,需要100一个的显示,就要用到迭代器
1什么是迭代器
迭代器是py中最具有特色的功能之一,是访问集合元素的一直方式
迭代器是一个可以记住访问遍历的位置的对象
从集合的第一个元素开始访问,知道集合中所有的元素被访问完毕
迭代器只能从前向后一个一个的遍历,不能后退
迭代器是一个能被next()函数调用,并不断返回下一个值的对象称为(迭代器)
"""
iter()
功能:把可迭代对象(str,list ,tuple,dict,set,range),转为一个迭代器对象
参数:可迭代的对象(str,list ,tuple,dict,set,range)
返回值:迭代器对象
注意:迭代器一定是一个可迭代的对象,但是可跌代对象不一定是迭代器
"""
2迭代器演示
`f = ["a","b","c","d"]`
#iter把可迭代对象转为迭代器使用
res = iter(f)
print(res,type(res)) #<list_iterator object at 0x000002B5DD986640> <class 'list_iterator'>
3调用迭代器的方法 next
list
for
1 .next函数调用迭代器,1次取1个值,直到把值取完
print(next(res)) #a
print(next(res)) #b
2. list 直接取出迭代器中的所有数据
res1 =list(res)
print(res1)
['c', 'd'] #返回列表
for 能遍历迭代器中的所有数据
for i in res:
print(i)
c
d
4 检查是不是迭代器
from collections.abc import Iterator,Iterable
- Iterable#检测试是不是 可迭代对象
- Iterator#检测试是不是 一个迭代器
from collections.abc import Iterator,Iterable
f = ["a","b","c","d"]
res = iter(f)
varstr = '123456'
r1 = isinstance(varstr,Iterable) # True 是可迭代对象
r2 = isinstance(varstr,Iterator) # False 不是一个迭代器
r3 = isinstance(res,Iterable) # True 是可迭代对象 `#迭代器绝对是一个可迭代的对象,`
r4 = isinstance(res,Iterator) # True 是一个迭代器 `#迭代器绝对是一个可迭代的对象,`
print(r1,r2)
print(r3,r4)
5 可迭代对象不一定是迭代器
varstr = '123456
next(varstr)
Traceback (most recent call last):
File "D:/py/test/gao/迭代器.py", line 36, in <module>
next(varstr)
TypeError: 'str' object is not an iterator