函数-生成器迭代器

Posted rise-home

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数-生成器迭代器相关的知识,希望对你有一定的参考价值。

#-----列表生成器-----

1 a = [x*2 for x in range(10)]
2 print(a,type(a)) #[0, 2, 4, 6, 8, 10, 12, 14, 16, 18] <class ‘list‘>
3 
4 def f(n):
5     return n**3
6 
7 a = [f(x) for x in range(10)]
8 print(a,type(a)) #[0, 1, 8, 27, 64, 125, 216, 343, 512, 729] <class ‘list‘>

 

#-----简单赋值方式

1 t = (12,45)
2 a,b = t
3 print(a)#12
4 print(b)#45

 

#----生成器(生成器就是可迭代对象)-----

 1 s = (x*2 for x in range(10))
 2 for i in s:
 3     print(i,end=" ") # 0 2 4 6 8 10 12 14 16 18
 4 
 5 #可迭代对象 :内部有iter 方法
 6 a = (1,2,3,5)
 7 a.__iter__()
 8 b = [2,3,4,5]
 9 b.__iter__()
10 c = "a":"d","g":"r"
11 c.__iter__()
12 e = set(a)
13 print(e,type(e))
14 e.__iter__()

 

#-----yield关键字生成斐波那契数列

 1 def fib(max):
 2     n,before,after = 0,0,1
 3     while n < max:
 4         yield after
 5         before,after = after,before+after
 6         n += 1
 7 
 8 g = fib(6)
 9 for i in g:
10     print(i)

 

#-----yield 使用

 1 def bar():
 2     print("ok1")
 3     str1 = yield 1
 4     print(str1)
 5 
 6     print("ok2")
 7     str2 = yield 2
 8     print(str2)
 9 b = bar()
10 next(b)
11 ret = b.send("ee")
12 print(ret)

 

#-----还可通过yield实现在单线程的情况下实现并发运算的效果

技术图片
 1 import time
 2 
 3 def tourist(name):
 4     print("%s 开始吃包子" % name)
 5     while True:
 6         baozi = yield  #生成器函数(generator)
 7         print("%s吃了第%s个" % (name, baozi))
 8 
 9 def cook(name):
10     c1  = tourist("A")
11     c2 = tourist("B")
12     c1.__next__()
13     c2.__next__()
14     print("%s开始做包子了" % name)
15     for i in range(1,10):
16         time.sleep(0.2)
17         c1.send(i)
18         c2.send(i)
19 cook("dream")
View Code

 

#-----迭代器-----

1、有iter方法
2、有next方法
1 a = ["dream","rise","happy"]
2 d = iter(a) #<list_iterator object at 0x000001E01BFADA90>
3 print(d)
4 print(a.__iter__())#<list_iterator object at 0x00000258F8392668>

以上是关于函数-生成器迭代器的主要内容,如果未能解决你的问题,请参考以下文章

python函数-迭代器和生成器

python函数:迭代器和生成器

python之迭代器生成器和内置函数,匿名函数

python函数:迭代器和生成器

python 第五章 迭代器,生成器,生成器函数

python基础----迭代器生成器协程函数