递归迭代和生成器

1.
递归是针对函数,迭代是针对循环
2.
参考:
http://www.cnblogs.com/hustcser/p/4256177.html
生成器与迭代器的区别:
生成器就是一种迭代器。生成器拥有next方法并且行为与迭代器完全相同,这意味着生成器也可以用于Python的for循环中。
Python的for循环中,有next()调用和对StopIteration的处理,这样使得生成器和迭代器运行表象上看似相同,如下:
iterator = [i for i in range(5)]
for obj in iterator:
    print(obj)
# 0 1 2 3 4

# (i for i in range(5)) 就是一个生成器表达式
generator = (i for i in range(5))
for obj in generator:
    print(obj)
#0 1 2 3 4
print(sum(x ** 3 for x in range(10) if x % 3 == 1))
 # 408
当你使用一个列表生成式来建立一个列表的时候,就建立了一个可迭代的对象, 看起来除了把 [] 换成 () 外没什么不同。
但是,你不可以再次使用 for i in mygenerator , 因为生成器只能被跌代一次:先计算出0,然后继续计算1,然后计算4,一个跟一个的。
比如,下列脚本中不能够打印出True,但如果是迭代器,则可以打印出True:
mylist = [1, 4, -5, 10, -7, 2, 3, -1]
pos = (n for n in mylist if n > 0)
for x in pos:
    print(x)
for x in pos:
    print('True')
# 1
# 4
# 10
# 2
# 3
注意: 所有你可以使用 for .. in .. 语法的叫做一个迭代器:链表,字符串,文件... 你经常使用它们是因为你可以如你所愿的读取其中的元素,
但是你把所有的值都存储到了内存中,如果你有大量数据的话这个方式并不是你想要的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值