python迭代器简介

来源:互联网 发布:知豆电动汽车官网 编辑:程序博客网 时间:2024/06/07 00:08

迭代器简要笔记内容及其示例

#!/usr/bin/python# -*- coding utf8 -*-'''迭代器迭代的概念:重复+上一次迭代的结果为下一次迭代的初始值重复的过程称为迭代,每次重复即一次迭代,并且每次迭代的结果是下一次迭代的初始值'''# while True: #只满足重复,因而不是迭代#     print('====>')#下面才为迭代# l = [1, 2, 3]# count = 0# while count < len(l):  # 只满足重复,因而不是迭代#     print('====>', l[count])#     count += 1## l = (1, 2, 3)# count = 0# while count < len(l):  # 只满足重复,因而不是迭代#     print('====>', l[count])#     count += 1# s='hello'# count = 0# while count < len(s):#     print('====>', s[count])#     count += 1##为什么要有迭代器?对于没有索引的数据类型,必须提供一种不依赖索引的迭代方式#可迭代的对象:内置__iter__方法的,都是可迭代的对象# [1,2].__iter__()# 'hello'.__iter__()# (1,2).__iter__()## {'a':1,'b':2}.__iter__()# {1,2,3}.__iter__()#迭代器:执行__iter__方法,得到的结果就是迭代器,迭代器对象有__next__方法# i=[1,2,3].__iter__()## print(i)## print(i.__next__())# print(i.__next__())# print(i.__next__())# print(i.__next__()) #抛出异常:StopIteration# i={'a':1,'b':2,'c':3}.__iter__()# print(i.__next__())# print(i.__next__())# print(i.__next__())# print(i.__next__())dic={'a':1,'b':2,'c':3}#可迭代对象变成迭代器i=dic.__iter__()#用迭代器的方法取出所有while True:    try:        key = i.__next__()        print(dic[key])    except StopIteration:        breaks='hello'print(s.__len__())   #等同于len(s)s={'a',3,2,4}#s.__iter__() #iter(s)i = iter(s)print(next(i))print(next(i))print(next(i))print(next(i))#如何判断一个对象是可迭代的对象 还是迭代器对象# 'abc'.__iter__()# ().__iter__()# [].__iter__()# {'a':1}.__iter__()# {1,2}.__iter__()f=open('a','w')f.__iter__()#可迭代数据类型有  字符串 元组 列表  字典  元组 文件from collections import Iterable,Iteratorprint(isinstance('abc',Iterable))  #可迭代对象# print(isinstance([],Iterable))# print(isinstance((),Iterable))# print(isinstance({'a':1},Iterable))# print(isinstance({1,2},Iterable))# print(isinstance(f,Iterable))#是可迭代对象 不是迭代器   只有文件是迭代器print(isinstance('abc',Iterator))  #迭代器测试# print(isinstance([],Iterator))# print(isinstance((),Iterator))# print(isinstance({'a':1},Iterator))# print(isinstance({1,2},Iterator))print(isinstance(f,Iterator))print(isinstance('abc'.__iter__(),Iterator))  #执行完_iter_方法就是迭代器'''可迭代对象:只有__iter__方法,执行该方法得到的迭代器对象迭代协议:    对象有__next__    对象有__iter__,对于迭代器对象来说,执行__iter__方法,得到的结果仍然是它本身 #文件类型'''dic={'name':'egon','age':18,'height':'180'}# print(dic.items())# for k,v in dic.items():#     print(k,v)#for k in dic:  #dic执行_iter_方法    i=dic._iter_()  k = next(i) #   print(k)i=iter(dic)while True:    try:        k=next(i)        print(k)    except StopIteration:        break'''迭代器优缺点 优点:提供了一种不依赖于下标的迭代方式     迭代器本身来说,更节省内存缺点:    无法按索引取,无法回退 不如序列类型灵活'''#读取文件的节省内存方法,readlines默认读取文件所有内容到一个列表f=open('闭包.py',encoding='utf-8')## for line in f.readlines():#     print(line)print(next(f))#for line in f:#    print(line)#enumerrate也是迭代器l=[10000,2,3,4,5]i=enumerate(l)print(next(i))


原创粉丝点击