964
社区成员
发帖
与我相关
我的任务
分享
这是我参加朝闻道知识分享大赛的第32篇文章。
每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。例如:循环获取容器中的元素。
"""
迭代 iteration
每次都会在之前基础上有所增加的重复过程
迭代器 iter ator
完成迭代过程的对象
可迭代对象 iter able
创建迭代器的对象
"""
message = "我是齐天大圣孙悟空"
# 遍历
for item in message:
print(item)
# 学习for循环原理(内部代码)
# 1. 获取迭代器
iterator = message.__iter__()
while True:
try:
# 2. 获取下一个元素
item = iterator.__next__()
print(item)
# 3. 如果停止迭代则退出循环
except StopIteration:
break
# 面试题:
# 能够参与for循环的条件是什么?
# 答:对象具有__iter__函数
# 能够获取迭代器对象(是可迭代对象)
# 自定义对象参与for循环
class StudentIterator: # 迭代器
def __init__(self, data):
self.data = data
self.index = -1
def __next__(self):
if self.index >= len(self.data) - 1:
raise StopIteration()
self.index += 1
return self.data[self.index]
class StudentController: # 可迭代对象
def __init__(self):
self.list_student = []
def __iter__(self):
return StudentIterator(self.list_student)
controller = StudentController()
controller.list_student.append("吉宇轩")
controller.list_student.append("周字华")
controller.list_student.append("涂洋涛")
# for item in controller:
# print(item)
iterator = controller.__iter__()
while True:
try:
item = iterator.__next__()
print(item)
except StopIteration:
break
(1) 定义:具有__iter__函数的对象,可以返回迭代器对象。
(2) 语法
# 创建:
class 可迭代对象名称:
def __iter__(self):
return 迭代器
# 使用:
for 变量名 in 可迭代对象:
语句
(3) 原理:
迭代器 = 可迭代对象.__iter__()
while True:
try:
print(迭代器.__next__())
except StopIteration:
break
(1) 定义:可以被next()函数调用并返回下一个值的对象。
(2) 语法
class 迭代器类名:
def __init__(self, 聚合对象):
self.聚合对象= 聚合对象
def __next__(self):
if 没有元素:
raise StopIteration()
return 聚合对象元素
(3) 说明:聚合对象通常是容器对象。
(4) 作用:使用者只需通过一种方式,便可简洁明了的获取聚合对象中各个元素,而又无需了解其内部结构。