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
posted @ 2021-12-01 16:08  john5的博客  阅读(38)  评论(0编辑  收藏  举报
// 侧边栏目录 // https://blog-static.cnblogs.com/files/douzujun/marvin.nav.my1502.css