三探迭代、递归、循环
【摘要】 导入: 补充知识: 迭代、递归与循环:迭代与递归都是循环的子集,一个是取值推算,一个是不断的调用自己。 相同点:迭代、递归、循环都是 “重复” 相似点:调用逻辑相似 不同点:我简单理解为迭代是根据自身的上一个值推算下一个值,而递归则是由上一个值与 “己身” 直接运算。循环是自身与外界计算 堆栈关系调用不同 当然也不能说谁好谁坏,只能说三者主针对不同 来,来,来,翠花上栗子...
导入:
补充知识:
迭代、递归与循环:迭代与递归都是循环的子集,一个是取值推算,一个是不断的调用自己。 相同点:迭代、递归、循环都是 “重复” 相似点:调用逻辑相似 不同点:我简单理解为迭代是根据自身的上一个值推算下一个值,而递归则是由上一个值与 “己身” 直接运算。循环是自身与外界计算 堆栈关系调用不同 当然也不能说谁好谁坏,只能说三者主针对不同
来,来,来,翠花上栗子:
递归,归去来兮 :
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 函数
文章来源: cuiqingcai.com,作者:Payne,版权归原作者所有,如需转载,请联系作者。
原文链接:cuiqingcai.com/9496.html
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)