您的位置:首页 > 新闻频道 > 国内新闻 > 商业资讯>正文

传智播客郑州校区Python基础学习之迭代器与生成器

时间:2018-01-03 14:25:02    来源:    浏览次数:    我来说两句() 字号:TT

  在传智播客学习python开发时,经常会有同学对迭代器和生成器产生疑惑,今天传智播客就为同学们解读一下迭代器和生成器.

  一、传智播客Python基础学习之迭代器

  迭代器只能向前访问,不能后退.

  字典,列表,元组,字符串,range都是可以迭代的对象。

  1、 创建迭代器

  `dict={1:3,2:4,3:5,4:6}key = iter(dict)print(key)print(next(key))print(next(key)) values = iter(dict.values())print(values)print(next(values))print(next(values)) list= [1, 2, 3, 4, 5]list2 = iter(list)print(list2)print(next(list2))print(next(list2))print(next(list2))print(next(list2)) ranges = iter(range(1, 10))print(ranges)print(next(ranges))print(next(ranges))print(next(ranges))`运行结果:123412341232、读取迭代器: #for遍历 list= [1, 2, 3, 4, 5] for i in iter(list): print(i)next()遍历: while True: try: print (next(it)) except StopIteration: sys.exit()

  二、传智播客Python基础学习之生成器

  使用了yield的函数称为生成器(generater),一次读取一个元素,节省内存资源。

  生成器用于不知道会生成多大数据的场景,每生成一个数据返回一次

  跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作。

  在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回yield的值。并在下一次执行 next()方法时从当前位置继续运行。

  下面代码正常是死循环,但是使用yield以后,只在用next()方法,才会运行一次。

  def gena(i=2): while True: i = i * 2 - 1 yield i运行: l = gena(2)print(l)print(next(l))print(next(l))


注:本文观点仅代表作者本人观点,与本网站无关,本网站亦不对其真实性负责。■

请选择您浏览此新闻时的心情

相关新闻
网友评论
本文共有人参与评论
用户名:
密码:
验证码:  
匿名发表