zoukankan      html  css  js  c++  java
  • 第八章、函数进阶之迭代器03

    第八章、函数进阶之迭代器03

    1. 什么是迭代

    迭代更新换代,基于上一次的结果退出下一次的结果

    2.可迭代对象

    具有__iter__()方法的就是可迭代对象,除了数字类型和函数类型都是可迭代对象

    x = 1  # 不可迭代对象
    s = 'jiayi'  # 可迭代对象
    lt = [1, 2, 3]  # 可迭代对象
    dic = {'a': 1, 'b': 2}  # 可迭代对象
    tup = (1,)  # 元组只有一个元素必须得加逗号# 可迭代对象
    se = {1, 2, 3}  # 可迭代对象
    f = open('time.py')  # 可迭代对象
    

    --iter--和--next--

    str="ypp"
    print(type(str))#<class 'str'>
    str_iter=str.__iter__()#把str变为迭代器对象
    print(type(str_iter))#<class 'str_iterator'>
    print(str_iter.__next__())  #y  基于索引(基于上一次结果),通过__next__进行迭代
    print(s_iter.__next__())#p
    

    3.for循环原理(迭代原理)

    str="ypp"
    print(type(str))#<class 'str'>
    str_iter=str.__iter__()#把str变为迭代器对象
    print(type(str_iter))#<class 'str_iterator'>
    for i in str:
        print(i)  #基于索引(基于上一次结果),通过__next__进行迭代
    -------------------------------------------------------
    while 1:
        try:
            print(str_iter.__next__())
        except StopIteration:
            break
    
    y
    p
    p
    y
    p
    p
    
    1. 把str(可迭代对象/迭代器对象)用__iter__转换成迭代器对象,就能使用迭代器对象__next__的方法了
    2. 使用__next__取出迭代器的所有值
    3. 使用__next__取尽迭代器全部值了后会报错,通过异常捕捉退出while循环

    可迭代对象无论迭代多少次,内存地址都不会变化

    迭代器对象一定时间可迭代对象,可迭代对象不一定是迭代器对象

  • 相关阅读:
    说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
    利用CSS3实现页面淡入动画特效
    ajax
    jQuery弹性滑动导航菜单实现思路及代码
    angular 管理后台
    jq简单选项卡
    按钮60秒倒计时
    jq倒计时
    angular ui-route
    flex弹性布局
  • 原文地址:https://www.cnblogs.com/demiao/p/11341865.html
Copyright © 2011-2022 走看看