Function - generator, iterator

# ----- ----- List Builder

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'>

 

# ----- simple assignment mode

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

 

# ---- Generator (generator is iterable) -----

. 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 is 14 16 18 is 
. 4  
. 5  # iterables: internal there iter method 
. 6 A = (1, 2,3,5 )
 . 7 . A the __iter__ ()
 . 8 B = [2,3,4,5 ]
 . 9 . B the __iter__ ()
 10 C = { " A " : " D " , " G ":"r"}
11 c.__iter__()
12 e = set(a)
13 print(e,type(e))
14 e.__iter__()

 

# ----- yield keywords to generate Fibonacci number

 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 using

 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)

 

# ----- concurrent operation may also be implemented to achieve the effect in case of single-threaded through yield

. 1  Import Time
 2  
. 3  DEF Tourist (name):
 . 4      Print ( " % s Start bun " % name)
 . 5      the while True:
 . 6          Baozi = the yield   # generator function (Generator) 
. 7          Print ( " % s% s of eating a " % (name, Baozi))
 . 8  
. 9  DEF Cook (name):
 10      C1 = Tourist ( " A " )
 . 11      C2 = Tourist ( " B " )
 12 is     . C1 __next__ ()
 13 is      . C2 __next__ ()
 14      Print ( " % S started buns " % name)
 15      for I in Range (1,10 ):
 16          the time.sleep (0.2 )
 . 17          c1.send (I)
 18 is          c2.send (I)
 . 19 Cook ( " Dream " )
View Code

 

----- # ----- iterator

1, there are iter method
2, the next method
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>

Guess you like

Origin www.cnblogs.com/rise-home/p/11612358.html