迭代
定义:每一次对过程的重复称为一次"迭代",而每一次迭代得到的结果会作为下一次迭代的初始值。例如:循环获取容器中的元素。
可迭代对象iterable(怎么用)
定义:具有__iter__函数的对象,可以返回迭代器对象。
"""
可迭代对象
"""
#可迭代对象 --- 容器
list01 =[43,43,4,5,567]
#迭代过程
# for item in list01:
# print(item)
#迭代原理
#面试题:for循环的原理是什么?
#答:1. 获取迭代器;2. 循环获取下一个元素;3.遇到异常停止迭代
# 可以被for的条件是是什么?
# 能被for对象必须具备__iter__方法
#能被for对象是可迭代对象
#1. 获取迭代器
iterator = list01.__iter__()
#2. 循环获取下一个元素
while True:
try:
item = iterator.__next__()
print(item)
# 3.遇到异常停止迭代
except StopIteration:
break#退出循环
练习(面试题常考)
练习1:
使用迭代器原理,遍历元组。
(“铁扇公主”,“铁锤公主”,“扳手王子”)
tuple01 = ("铁扇公主","铁锤公主","扳手王子")
iterator = tuple01.__iter__()
while True:
try:
item = iterator.__next__()
print(item)
except StopIteration:
break
练习2:
不使用for,获取字典所有数据。
{“铁扇公主”:101,“铁锤公主”:102,“扳手王子”:1031}
dict01 = {
"铁扇公主":101,"铁锤公主":102,"扳手王子":1031}
iterator = dict01.__iter__()
while True:
try:
key = iterator.__next__()
print(key,dict01[key])
except StopIteration:
break
迭代器对象iterator(怎么做)
"""
迭代器
"""
class Skill:
pass
class SkillIterator:
"""
技能迭代器
"""
def __init__(self,target):
self.__target = target
self.__index = 0
def __next__(self):
#如果没有数据了抛出异常
if self.__index > len(self.__target) -1