码迷,mamicode.com
首页 > 编程语言 > 详细

【python迭代】迭代

时间:2018-12-03 00:50:55      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:通用   手动   访问   循环   结构   协议   对象   __iter__   元素   

1 概念
    1. 容器
        数据结构:多个元素组织在一起,并且提供了访问元素的方法
    2. 可迭代对象 // 序列-->可迭代对象
        实现了__iter__的对象,可以用在迭代工具中遍历
    2. 迭代器 // 1. 访问集合元素的一种方式  2. 可以记住遍历状态
        实现了__iter__和__next__的对象;可以显示调用next()返回下一项
    3. 迭代协议
        对象提供一个next()方法,要么返回下一项,要么StopIteration异常
    4. 生成器  // 1. 自动实现了迭代器协议,可以直接调用next() 2. 有状态 3. 延迟计算
        生成器是特殊的迭代器

        *生成器函数* // 返回迭代器的函数
        yield关键字返回值,每次返回一个结果,挂起函数中间状态,以便下次从他离开的地方继续执行
        *生成器表达式*
        () // 生成器表达式比列表解析更加节省内存

2 可迭代对象种类

    字符串、列表、元祖、字典、集合、文件等,一般情况下都不是可迭代对象;可以有2种方式变为可迭代对象:
    1> iter(上述对象)  // 手动调用iter()将对象变为可迭代对象
    2> 迭代工具 // 比如for循环

    **for循环本质**
    for循环本质:for循环作为迭代工具,内部会先调用__iter__()方法,然后调用__next__()方法一个个返回元素

3 迭代工具

    *提供了一个通用的访问可迭代对象元素的方式*
    1 for循环 2 列表解析 3 字典解析 4 内置函数 // map、zip、filter、sum、enumerate、in成员

【python迭代】迭代

标签:通用   手动   访问   循环   结构   协议   对象   __iter__   元素   

原文地址:http://blog.51cto.com/kongxiaofa/2324975

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!