十一、迭代器和生成器 1.迭代器
2021/12/14 6:19:06
本文主要是介绍十一、迭代器和生成器 1.迭代器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
迭代器
可迭代对象 可迭代的:适合作为函数或结构体的参数,这些函数和结构体期望在迭代结束之前可以从中获取连续的元素 可迭代对象通过__iter__()方法向我们提供一个迭代器 迭代一个可迭代对象时,实际就是先获取该对象提供的迭代器,然后通过这个迭代器来依次获取对象中的数据 可迭代对象的本质:对象所属的类中包含__iter__()方法 迭代器 迭代器是一种访问集合元素的方式 迭代器可以记录访问的位置 迭代器访问可迭代对象时,从第一个元素开始逐一访问,直至所有元素都被访问完毕,不能倒退 迭代器一定是可迭代对象,可迭代对象不一定是迭代器 能用next()调用的可迭代对象(Iterable)被称为迭代器对象(Iterator) for循环的本质: 1.通过 iter(iterable) 获取要遍历对象的迭代器 2.通过 next(iterator) 获取下一个元素 3.取值完毕后捕获异常 自定义迭代器类 必须有以下两个方法 1. __iter__(),迭代器方法,通常返回自己,迭代器本身也是一个迭代器 2. __next__(),取值方法,供迭代器对象调用 iter(), 功能:把一个可迭代对象转为迭代器对象 参数:可迭代对象(str,list,tuple,dict,set,range) 返回值:迭代器 next(iterator), 功能:调用iterator,并逐一返回iterator中的数据;只有iterator能被next()调用 参数:iterator 返回值:iterator中的元素 isinstance(), 功能:判断参数是否是指定的类型
# 可迭代对象 varlist = [10,11,'M','R'] print(varlist) for p in varlist : print(p) for n in range(1) : # range() 返回一个可迭代对象 print(n) [10, 11, 'M', 'R'] 10 11 M R 0
# 迭代器对象 vardict = {'N':'11','S':'9','M':'10','I':'8','X':'6'} A = iter(vardict) print(A,type(A)) ''' 迭代器的取值方式 1.next() 使用next()调用迭代器,从第一个数据开始逐一取出 2.list() 使用list()把迭代器转为list,一次性取出所有数据 3.for 使用for循环遍历迭代器 无论使用何种方式取值,迭代器中的数据都是取一次少一个,直至数据被取完 ''' # next()取值 print(next(A)) print(next(A)) print(next(A)) # for取值 for p in A : print(p) # list()取值 l = list(A) print(l) # 迭代器和可迭代对象的检测方法 from collections.abc import Iterator,Iterable vartuple = ('M',10) t = iter(vartuple) i1 = isinstance(vartuple,Iterable) i2 = isinstance(vartuple,Iterator) print(i1,i2) i3 = isinstance(t,Iterable) i4 = isinstance(t,Iterator) print(i3,i4) # 只有迭代器可以被next()调用,所以可以使用next()来检测迭代器 # next(vartuple) 'tuple' object is not an iterator # 自定义迭代器类 class MyIterator(object): # 返回自己 def __iter__(self): return self # 执行 next(iterator) 时自动调用此方法 def __next__(self): pass <dict_keyiterator object at 0x00000006E01744A8> <class 'dict_keyiterator'> N S M I X [] True False True True
这篇关于十一、迭代器和生成器 1.迭代器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南