zoukankan      html  css  js  c++  java
  • 【迭代器-生成器】

    可迭代对象:内部含有“__iter__”方法的数据就是可迭代对象(str,list,tuple,set,dict,range(),文件句柄)

    迭代器:内部含有"__iter__"方法并且含有“__next__”方法的就是迭代器(1.非常节省内存,2.满足惰性机制,3一条路走到黑)

    字符串不是迭代器,只是可迭代对象

    # # print(dir(s1))
    # print('__iter__' in dir(s1))

    # f1 = open('regsiter', encoding='utf-8')
    # print('__iter__' in dir(f1))
    # print('__next__' in dir(f1))
    # f1.close()

    # l1 = [1, 2, 3, 'alex']
    # iter1 = l1.__iter__()
    # while 1:
    # try:
    # print(iter1.__next__())
    # except StopIteration:
    # break

    # 利用while循环模拟for循环 的机制。
     1, 将可迭代对象转化成迭代器
     2, 利用next 进行取值
     3, 利用异常处理终止循环。

    生成器:自己用python代码写的迭代器,本质就是迭代器

    1.函数是写法2.生成器表达式

    def func1():
    yield "你 够可以的"
    yield 2
    g=func1()#生成器对象
    print(g)
    print(g.__next__())
    print(g.__next__())

    return:结束函数,给函数返回值。yield:不会结束生成器函数,next对应一个yield进行取值

    # 列表推导式
    # 凡是用列表推导式能构建的数据,python代码都可以构建,列表推导式不能构建的数据,python代码异可以构建

  • 相关阅读:
    dedecms初解
    Java二十三设计模式之------单例模式
    Java二十三设计模式之------工厂方法模式
    数组和集合的区别及深入了解
    团队项目计划
    团队介绍及团队题目
    第二阶段冲刺(第十天)
    第二阶段冲刺(第九天)
    第二阶段冲刺(第八天)
    第二阶段冲刺(第七天)
  • 原文地址:https://www.cnblogs.com/bonnyxinxin/p/13042247.html
Copyright © 2011-2022 走看看