Python档案袋(生成器、迭代器、队列 )

Python档案袋(生成器、迭代器、队列 ),第1张

概述生成器: 简单的生成器实现: 生成器进阶: 生成器发送数据: 迭代器: 表示一个数据流,可以无限大 可使用for循环的对象都是可迭代对象,如字符串、列表、字典等,可使用next(对象)的对象都是迭代器 生成器:

简单的生成器实现:

 1 #生成器,将for循环的变量传递到前面的式子进行处理 2 生成的并不是一个列表,而是一个存在算数规则的对象 3 不能通过下标直接取值,必须一个一个从头到尾取 4 va=(i*2 for i in range(10)) 5 print(va) 6  7 调用下一个,只记住当前位置,相当于有一个游标,只能向下 8 print(va.__next__()) 输出:0 9 输出:210 11 变量生成器12 in va:13     print(i) 输出:#4 6 8 10 12 14 16 18

生成器进阶:

def funx1(max): 2     m,x,y=0,1 3     while m<max: 4         print(y) #1 1 2 3 5 8 13 21 34 55 5         yIEld y 生成器输出,使用for循环或者next方法才会输出 6         x,y=y,(x+y) 7         m+=1 8 普通调用10 funx1(10)11 生成器调用13 funx=funx1(10)14 print(funx.__next__())15 print("----- 可输出 ------"16 取值方法1:",funx.17 取值方法2:生成器发送数据:

 funx1(): 2     while True: 如果不写则启动就结束了,不能继续发数据 3         res=yIEld获取的结果:,res) 5  6  7 funx=funx1() 8 funx.send(None) 必须先启动生成器,无输出,也可以使用funx.__next__() 9 funx.send(------") 发送数据,输出:获取的结果: ------10 funx.send(******输出:获取的结果: ******
迭代器:

表示一个数据流,可以无限大

可使用for循环的对象都是可迭代对象,如字符串、列表、字典等,可使用next(对象)的对象都是迭代器对象

可迭代对象可以通过iter方法变成迭代器对象

1 strx=abcdefghigk"2 3 转换为迭代器4 va=iter(strx)5 6 print(next(va)) 输出:a7 输出:b
 队列

可自定义先入先出还是后人先出,数据一经取出就在队列里自动去除

import queue 2 先进先出 4 qListx=queue.Queue(maxsize=5) #生成实例,参数maxsize表示最大数量,超过则阻塞,等待头取出qListx=queue.Queue() #生成实例后进先出 8 qListx=queue.lifoQueue() 生成实例 9 设置数据方法一队列满则阻塞等待13 qListx.put(111111114 qListx.put(222222215 设置数据方法二超时则报异常18 qListx.put(33333319 20 print(qListx.qsize()) 输出列表大小21 22 取数据方法一23 如果取到最后没有数据,将会一直处于阻塞24 (qListx.get())25 26 27 取值方法二28 设置超时时间,超时则报异常29 print(qListx.get(timeout=130 31 32 取数据方法三33 无数据不进行阻塞,如果无数据则报异常34 print(qListx.get_Nowait())

优先级存取值:

值越小则优先级越高,实现高优先级最先取出

 queueqListx=queue.PriorityQueue() qListx.put((1,))qListx.put((-1,1)">))qListx.put((100,1)">99999999))print(qListx.get()) 输出:(-1,'2222222')输出:(1,'1111111')
总结

以上是内存溢出为你收集整理的Python档案袋(生成器、迭代器、队列 )全部内容,希望文章能够帮你解决Python档案袋(生成器、迭代器、队列 )所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1189847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存