Python-4迭代器
1.迭代器:指的是能被next()调用且不断返回下一个值的对象,迭代器是一个工具,一个重复的过程,每一次都是基于前一次的结果上进行,不依赖于索引每次只取出一个值,(能够大大节省空间和资源)
2.可迭代对象:可以依次遍历出所有的值(可以使用for 循环)
3.可迭代对象不一定是迭代器
迭代器一定是可迭代对象
4.isinstance() 函数来判断一个对象是否是一个已知的类型,类似于type()
""" -*- coding: utf-8 -*- @FileName: 迭代器.py @Software: PyCharm @Time : 2023/4/28 14:17 @Author : Panda """ from collections import Iterable, Iterator # 1.可迭代对象 set_var = {'no1', 'no2', 'no3', 'no4'} # dir 获取当前对象的内置成员 lst = dir(set_var) # 判断是否迭代 res = '__iter__' in lst print(res) # Output:True # 2.生成一个迭代器,(本质上迭代器也是一个对象) it = iter(set_var) # 也可以另一种写法 it = __iter__() print(it) # Output: <set_iterator object at 0x00000174D2DFCAF8> result = ("__iter__" and "__next__") in dir(it) print(result) # Output: <set_iterator object at 0x0000025863E82A20> list_dir = dir(it) print(list_dir) # Output: ['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', # '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', # '__iter__', '__le__', '__length_hint__', '__lt__', '__ne__', '__new__', '__next__', # '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__'] # 3.迭代取值 单向不可逆 result_ = next(it) # 也可以 it.__next__() 取值 和 next()的本质是一样的,只是写法不一样 print(result_) result_ = next(it) print(result_) result_ = it.__next__() print(result_) result_ = it.__next__() print(result_) # Output: no3 no2 no4 no1 # result_ = it.__next__() # print(result_) # Output: StopIteration 如果迭代器里面没有数据了,则会报错“StopIteration”--停止迭代的错 # 4.判断是否是迭代器和迭代对象 res = isinstance(range(10), Iterator) res1 = isinstance(range(10), Iterable) print(res, res1) # Output: False True # 5.控制迭代次数可以使用for循环 itt = range(10).__iter__() for i in range(2): print(itt.__next__()) # Output: 0 1 print(next(itt)) # Output: 2 for j in itt: print(j) # Output: 3 4 5 6 7 8 9
本文来自博客园,作者:许个未来—,转载请注明原文链接:https://www.cnblogs.com/future-panda/p/17362280.html