# ----- ----- 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 " )
----- # ----- 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>