zoukankan      html  css  js  c++  java
  • python的生成器和迭代器

    三、推倒式
    从时间上比较:集合 字典 元祖 列表 (从小到大)
    占用内存比较:字典 集合 列表 元祖 (从大到小)

    字典是可进行hash操作,操作的是字典的key ,而对list进行hash操作的时候操作的是
    list的值

    1、列表推导式
    例子:list =[i for i in rang(1,200)]
    解释:
    列表推导式就是简写了的for循环,代码更加简洁,for循环每遍历一次就往list
    里面添加一个数据

    2、字典推导式

    把下列字符串使用字典推导式生成一个字典
    cook_str='BIDUPSID=D0727533D7147B7;PSTM=1530348042; '
    'BAIDUID=B1005C9BC2EB28; sugstore=0;'
    '__cfduid=d0a13458f8ac2a;BD_UPN=12314353;'
    'ispeed_lsm=2;BDORZ=B490B5EBF6F3CD402'

    data = { item.split("=")[0]:item.split("=")[1] for item in cook_str.split(";")}
    print(data)

    3、生成器表达式

    # 生成器表达式
    # 生成器
    # 生成器存储并不是具体的值,而是一个算法,通过next() 来进行取值
    # 一次只能取一个,如果取完了再去取,就会抛出异常
    # 一次只能取一个,如果取完了再去取,就会抛出异常
    tu = (i for i in range(1,20)) # 生成器对象
    print(next(tu)) # 取值
    # 通过yield 指定生成器 生成器取值使用next() 函数
    # next() 取值yield 一次取一个
    def gen_fun():
    yield 1
    print("hhhh")
    yield 100
    res = gen_fun()
    print(next(res))

    四、迭代器和生成器
    1、生成器
    生成器并不会一下子把所有的数据全部导出来,生成器中保存的只是一个生成数据的
    相关算法,并不会吧数据都生成出来,只是在我们需要数据的时候,用生成器去生成一条数据
    就可以了

    生成器比迭代器多了几种方法 send() close() throw()

    生成器 < 迭代器 < 可迭代对象
    2、迭代协议


    3、迭代器

    迭代器:在可迭代对象的基础上实现了 __iter__方法 还实现了 __next__方法

    可迭代对象:可以进行for循环的就是一个可迭代对象 内部只实现了 __iter__方法

    生成器也是迭代器的一种,都支持迭代操作 for循环

    例子:
    list = [1,2,3,4]
    list1 = iter(list) # 使用iter()来转化成一个迭代器
    print(next(list1)) # 使用next()方法取值

  • 相关阅读:
    Python socket
    JavaScript中的数组创建
    前端开发者常用的9个JavaScript图表库
    【JavaScript】回流(reflow)与重绘(repaint)
    JavaScript-数据类型和变量
    前端常见算法的JS实现
    CSS 小技巧
    calc() 计算CSS属性值
    面试时如何展示自己非技术方面的能力?
    React的diff算法(译文)
  • 原文地址:https://www.cnblogs.com/666666pingzi/p/10841908.html
Copyright © 2011-2022 走看看