生成器试题

生成器试题

生成器加载的时候都不运行,只有最后取值的时候才进行运算

 1 def add(n,i):
 2     return n+i
 3 
 4 def test():
 5     for i in range(4):
 6         yield i
 7 
 8 g=test()
 9 
10 for n in [1,2,3]:
11     g=(add(n,i) for i in g)
12 #等价于
13 #####
14 n = 1
15 g=(add(n,i) for i in g)
16 n = 2
17 g=(add(n,i) for i in g)
18 n = 3
19 g=(add(n,i) for i in g)
20 #####
21 n = 1
22 g=(add(n,i) for i in g)
23 n = 2
24 g=(add(n,i) for i in (add(n,i) for i in g))
25 n = 3
26 g=(add(n,i) for i in (add(n,i) for i in (add(n,i) for i in g)))
27 #####
28 n = 1
29 g=(add(n,i) for i in g)
30 n = 2
31 g=(add(n,i) for i in (add(n,i) for i in g))
32 n = 3
33 g=(add(n,i) for i in (add(n,i) for i in (add(n,i) for i in test())))
34 #test()  (0,1,2,3)
35 #####
36 n = 1
37 g=(add(n,i) for i in g)
38 n = 2
39 g=(add(n,i) for i in (add(n,i) for i in g))
40 n = 3
41 g=(add(n,i) for i in (add(n,i) for i in (add(3,i) for i in (0,1,2,3))))
42 #####
43 n = 1
44 g=(add(n,i) for i in g)
45 n = 2
46 g=(add(n,i) for i in (add(n,i) for i in g))
47 n = 3
48 g=(add(n,i) for i in (add(3,i) for i in (3,4,5,6)))
49 #####
50 n = 1
51 g=(add(n,i) for i in g)
52 n = 2
53 g=(add(n,i) for i in (add(n,i) for i in g))
54 n = 3
55 g=(add(3,i) for i in (6,7,8,9))
56 #####
57 
58 print(list(g))

 

转载于:https://www.cnblogs.com/ccqc/p/10211609.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值