导入:
补充知识:
迭代、递归与循环:迭代与递归都是循环的子集,一个是取值推算,一个是不断的调用自己。 相同点:迭代、递归、循环都是“重复” 相似点:调用逻辑相似 不同点:我简单理解为迭代是根据自身的上一个值推算下一个值,而递归则是由上一个值与“己身”直接运算。循环是自身与外界计算 堆栈关系调用不同 当然也不能说谁好谁坏,只能说三者主针对不同
来,来,来,翠花上栗子:
递归,归去来兮 :
1
2
3
4
5
6
7
8
9
10
11
12 def func(i):
i -= 1
if i == 1:
return 1
else:
print(i)
return func(i)
print(func(8))
# 输出结果:7、6、5、4、3、2、1
print(func(4))
# 输出结果:3、2、1迭代,更新换代(单单以数值方面考虑,凸显堆栈方面就。。。)
1
2
3
4
5
6
7
8
9
10 # 迭代
List = ['1','2','3']
i = 0
while True:
print(List[i])
i += 1
# 循环、也有点递归的意思。小问题,小问题,这里探究迭代与循环
count = 0
while True:
count = count + 1个人思考及感悟:如何判断生成器与迭代器?:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 区分循环、迭代
循环:与外界计算,重复亦或者
区分迭代器与生成器
迭代器:
可以被next()函数调用并不断返回下一个值的对象称为迭代器
生成器:
不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到出现
StopIteration
可使用isinstance()方法判断是否是Iterator对象
g = (i ** i for i in range(1, 10))
print(next(g))
print(next(g))
print(next(g))
。。。 。。。
for j in g:
print(j)
迭代器是什么?
迭代取值的工具,迭代是个循环,但不是重复的过程。每次的值都基于上次的值而来。迭代是特殊的重复
迭代器能做什么?
迭代取值;程序中用的比较多就是先存后取 用时在释放。释放next()函数,以及遍历
迭代器怎么使用?
next(可迭代对象) 或者 可迭代对象. next () 以及在函数中yield关键字
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 def foo():
print("starting...")
while True:
res = yield 4
print("res:", res)
g = foo()
print(next(g))
print("*" * 20)
print(next(g))
print(next(g))
print(next(g))
'''
starting...
4
********************
res: None
4
res: None
4
res: None
4
'''带yield的函数是一个生成器,而不是一个函数了,这个生成器有一个函数就是next函数