10.5迭代器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10.5迭代器相关的知识,希望对你有一定的参考价值。

迭代器

迭代器协议:
满足两个条件:1.有iter方法;2.有next方法

# -*-coding:utf-8 -*-
__date__ = ‘2018/3/18 ‘
__author__ = ‘xiaojiaxin‘
__file_name__ = ‘迭代器‘

#生成器都是迭代器,迭代器不一定是生成器

l=[1,2,3,4]
d=iter(l)
print(d)
# <list_iterator object at 0x000000CB6FC4B1D0>
print(next(d))
for i in d:
     print(i)

for循环内部三件事:
1.调用可迭代对象的iter方法,返回一个迭代器对象;
2.调用迭代器的next方法
3.处理StopIteration方法

for i in [1,2,3,4]:
    print(i)
# [1,2,3,4]本身没有next方法,是for循环给他做的
from collections import Iterator
from collections import Iterable
print(isinstance([1,2,3,4],list))  #判断是否为指定数据类型
# True
print(isinstance(1,list))
# False
print(isinstance([1,2],Iterable))
# True
print(isinstance([1,2],Iterator))
# False

# [1,2]是可迭代对象,但是不是迭代器
在for 循环里也把文件转换成了迭代器
max1=0
record=0
count=1
with open("hello.txt","r",encoding="utf-8")  as f:
    for i in f:
        if len(i.strip())>max1:
            max1=len(i)
            record=i
            count+=1

print("the longest sentence is %s,it is the  %d line,It has %d words"%(record,count,max1))

大家对内容有任何问题,欢迎留言,一定在第一时间解答,谢谢大家!

以上是关于10.5迭代器的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在片段着色器中使用先前渲染的结果?

可修复 “BootHole” 漏洞的Linux Debian 10.5 发布。

VSCode自定义代码片段——CSS选择器

VSCode自定义代码片段6——CSS选择器

行历史查看器 - Git

持久片段和查看器