Uh oh!
There was an error while loading. Please reload this page.
forked from SergioJune/python_test
- Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathtest6.py
More file actions
Latest commit
68 lines (54 loc) · 1.74 KB
/
Copy pathtest6.py
File metadata and controls
68 lines (54 loc) · 1.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# 练习生成式,生成式就是将列表生成式的中括号改成小括号即可
g= (xforxinrange(1,20))
print(g) # 这是个generator对象
print(next(g)) # 不断使用next来进行获取下一个数,当获取到最后一个数时会抛出StopIteration错误
# 可见这种方法对于列表相当大时,就可以节约内存,同时他也可以用for循环来获取元素
forxing:
print(x)
# 使用yield来定义一个生成器的函数
defodd():
print('yield 1')
# yield就是一个关键字,用来生成生成器
# 每执行一个next函数时,就会运行到一个yield处,把该值返回
yield1
print('yield 2')
yield2
print('yield 3')
yield3
o=odd()
# 他是生成器,所以可以通过next来获取数
print(next(o))
print(next(o))
print(next(o))
# next(o)
# 使用yield来编写斐波那契数列
deffib(n):
a, b=0, 1
whilen>0:
# 第一和第二个数都是1
yieldb
a, b=b, a+b
n-=1
return'done'
num=fib(6)
# 因为是生成器,所以可以通过for循环来获取元素
forxinnum:
print(x)
# 作业:有一个杨辉三角,把每一行看做一个list,试写一个generator,不断输出下一行的list:
deftriangles(n):
l= [1]
# 记录第几行,同时知道有多少个元素
num=1
whilenum<=n:
# 使用切片是避免两个变量指向同一个列表,从而影响了下面操作
L=l[:]
yieldL
num+=1
iflen(l) >1:
fordinrange(1, num-1):
l[d] =L[d] +L[d-1]
l[0] =1
l.append(1)
t=triangles(10)
forxint:
print(x)