Python-迭代| “朝闻道”知识分享大赛

小年华°Moon 小年华°Moon 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

这是我参加朝闻道知识分享大赛的第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

可迭代对象iterable

(1) 定义:具有__iter__函数的对象,可以返回迭代器对象。

(2) 语法

# 创建:
class 可迭代对象名称:
    def __iter__(self):
           return 迭代器
# 使用:
    for 变量名 in 可迭代对象:
        语句

(3) 原理:

迭代器 = 可迭代对象.__iter__()
while True:
    try: 
        print(迭代器.__next__())
    except StopIteration:
        break

迭代器对象iterator

(1) 定义:可以被next()函数调用并返回下一个值的对象。

(2) 语法

class 迭代器类名:
    def __init__(self, 聚合对象):
        self.聚合对象= 聚合对象 
 
    def __next__(self): 
        if 没有元素:
            raise StopIteration()
            return 聚合对象元素

(3) 说明:聚合对象通常是容器对象。

(4) 作用:使用者只需通过一种方式,便可简洁明了的获取聚合对象中各个元素,而又无需了解其内部结构。

...全文

相关推荐

python蓝桥杯大赛青少年创意编程和模拟题.rar

"Python蓝桥杯大赛青少年创意编程和模拟题.rar"这个压缩包文件主要涵盖了与Python编程相关的教育资源,特别是针对"蓝桥杯"这一全国性青少年编程竞赛。

淞元

第十届蓝桥杯大赛青少年创意编程Python组省赛(含答案).rar

Python的turtle库是一个非常适合初学者的图形绘制工具,它提供了一种直观的方式来编写命令,让一个虚拟的“海龟”在屏幕上移动并画出线条。

__蟑螂恶霸__

蓝桥杯大赛 青少年创意编程 Python组 资料集-2022.01.21.pdf

蓝桥杯大赛相关资源* 蓝桥杯大赛青少年创意编程 Python 组试题讲解:该资源提供了蓝桥杯大赛青少年创意编程 Python 组试题的解析和解答,涵盖了 Python 的基础知识和高级知识。

dllglvzhenfeng

全国职业院校技能大赛高职组”大数据“项目比赛资料

全国职业院校技能大赛高职组“大数据”项目比赛资料是一份重要的教育资源,主要涵盖了2017年大赛的任务内容。在大数据领域,此类竞赛旨在检验学生对大数据技术的理解、应用及解决实际问题的能力。

不努力哪来的收获

第十届蓝桥杯大赛青少年创意编程Python组省赛试题

蓝桥杯大赛一直以来都是检验学生Python编程技能的重要平台,对于参赛者来说,这是一次展示自我、锻炼技能和学习新知的宝贵机会。

资源哥
评论
收藏 已收藏
分享
返回顶部