python 迭代器

来源:互联网 发布:自动记牌器 安卓版源码 编辑:程序博客网 时间:2024/06/06 12:43
#有__next__方法的对象,都认为是可以迭代的,可通过x.__next__()来迭代,当迭代到空行会报错StopIterationf=open('e:/kangyujiao/test.txt')print(iter(f) is f)     #文件本身就是迭代器print(f.__next__(),end='')print(f.__next__(),end='')#print(f.__next__(),end='')#内置函数next,他会自动条用对象的__next__方法,给定一个可迭代对象,调用next(x)和x.__next__()是一样的,当迭代到空行会报错StopIterationf=open('e:/kangyujiao/test.txt')print(next(f),end='')print(next(f),end='')#print(next(f),end='')#当for循环开始时,会通过他传给iter内置函数,以便从可迭代对象中获得一个迭代器,返回的对象含有需要的next方法l=[1,2,3]print(iter(l) is l)   #列表不是迭代器i=iter(l)print(i.__next__())print(i.__next__())print(i.__next__())
#其他迭代环境print(sum([1,2,3,4,5]))    #15print(list(open('e:/kangyujiao/test.txt')))   #返回文件中的行组成的列表print(tuple(open('e:/kangyujiao/test.txt')))   #返回文件中的行组成的元组print('&&'.join(open('e:/kangyujiao/test.txt')))   #返回文件中的行组成的字符串a,b,c,d=open('e:/kangyujiao/test.txt')  #文件中的行分别赋值给a,b,c,dprint(a,b,c,d)a,*b=open('e:/kangyujiao/test.txt')  #文件中的第一行赋值给a,其他赋值给bprint(a,b)print(set(open('e:/kangyujiao/test.txt')))    #返回文件中的行组成的集合print({i:j for i,j in enumerate(open('e:/kangyujiao/test.txt'))})   #返回文件中的行组成的字典

#多个迭代器vs单个迭代器#range本身不是迭代器,产生一个迭代器后,他支持多个迭代器,这些迭代器会记住他们各自的位置r=range(3)i1=iter(r)print(next(i1))   #0print(next(i1))   #1i2=iter(r)print(next(i2))   #0print(next(i2))   #1#zip,map和filter不支持相同结果上的多个活跃迭代器z=zip((1,2,3),(4,5,6))i1=iter(z)i2=iter(z)print(next(i1))     #(1,4)print(next(i1))     #(2,5)print(next(i1))     #(3,6)z=map(abs, (-1,-2,-3,-4))i1=iter(z)i2=iter(z)print(next(i1))     #1print(next(i1))     #2print(next(i1))     #3

原创粉丝点击