原创 怎么理解Python迭代器与生成器?

发布时间:2020-07-08 15:17:42 浏览 735 来源:博学谷 作者:照照

    怎么理解Python迭代器与生成器?在Python中,使用for ... in ... 可以对listtuplesetdict数据类型进行迭代,可以把所有数据都过滤出来。如下:

     

    Python迭代器与生成器

     

    for element in [1, 2, 3]:

        print(element)

    for element in (1, 2, 3):

        print(element)

    for key in {'one':1, 'two':2}:

        print(key)

    for char in "123":

        print(char)

    for line in open("myfile.txt"):

    print(line, end='')

     

    1、迭代器

     

    对字符串,列表,使用内置函数 iter 转化为可迭代对象, 使用next关键字,可迭代对象每次取其中的一个值。如下面代码:

     

    nums = [1,2,3,4]

    nums = iter(nums)

    print(next(nums))

    print(next(nums))

    print(next(nums))

    print(next(nums))

     

    输出

     

    1

    2

    3

    4

     

    如果超出数据的长度,将会报错 StopIteration

     

    nums = [1,2,3,4]

    nums = iter(nums)

    print(next(nums))

    print(next(nums))

    print(next(nums))

    print(next(nums))

    print(next(nums)) # 超过数据长度,报错 StopIteration

     

    2、生成器

     

    使用生成器可以创建迭代器。生成器主要使用 yeild 关键字,每次调用 next 时会与yeild 定义的对应。例如:我们需要取 1020之间的数据,步长为2,可以使用如下code

     

    for x in range(10,20,2):

        print(x)

    但是如果步长设置为 0.5,如下代码:

    for x in range(10,20,0.5):

        print(x)

     

    将会报错

     

    TypeError: 'float' object cannot be interpreted as an integer

     

    这个时候,我们就可以使用 生成器来自定义一个函数

     

    def drange(start,stop,step):

        x = start

        while x< stop:

            yield x

            x += step

     

    for x in drange(10,20,0.5):

        print(x)

     

    再举一个例子:

    给定一个字符串,倒叙排列:

     

    def reverse(data):

        for x in range(len(data)-1,-1,-1):

            yield data[x]

     

    for x in reverse('gold'):

        print(x)

     

    看到这里,相信大家对于理解Python迭代器与生成器已经有了一定的理解。关于更多的干货内容,尽在博学谷IT培训平台,从零基础到进阶提升各个学习阶段的学习内容都在等着你!

    申请免费试学名额    

在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!

上一篇: Pyhton数据结构列表在线学习 下一篇: 年薪30万的数据分析师必备技能

相关推荐 更多

    推荐课程

  • 实现人脸识别和机器人走路

    免费 基础 2173

  • Python实战:开发井字棋小游戏

    免费 基础 354

  • Python实战:使用Pygame开发飞机大战小游戏

    免费 基础 654

  • Flask框架web开发入门教程

    免费 基础 881

  • Python实战:多人聊天室

    免费 基础 721

热门文章

  • UI设计培训费用要多少钱?靠不靠谱?
  • 哪个Python培训机构好些?怎么选?
  • 这样的Java自学姿势 学废最快
  • 2021年大数据行业发展前景及岗位方向如何?
  • Web前端开发工程师培训班哪家好?
  • 互联网产品经理岗位现在有多热门?
  • 前端测试用例怎么写?为什么写测试用例?
  • 有哪些好的线上培训产品经理的机构?
  • 零经验的人学编程难吗?能学会吗?
  • 传智博学谷神经网络和深度学习课程推荐
  • 查看更多

扫描二维码,了解更多信息

博学谷二维码