美文网首页
迭代器和生成器

迭代器和生成器

作者: Xyxtank | 来源:发表于2019-05-12 22:22 被阅读0次

    一、迭代器

    迭代器的名称看起来比较陌生,其实在使用列表(list)和元组(tuple)的时候已经使用过,只是在使用的时候是结合for in range取列表中的每一个元素,并对每一个元素进行相应的操作,这种方法称之为迭代,而能够实现这种方法的函数,称之为迭代器。

    alist = [1,2,3]
    a = iter(alist)
    print(type(a))
    print(next(a))#第一个元素
    print(next(a))#第二个元素
    print(next(a))#第三个元素
    print(next(a))#第四个元素,错误
    

    结果:

    <class 'list_iterator'>
    1
    2
    3
      File "C:/test.py", line 9, in <module>
        print(next(a))#第四个元素
    StopIteration
    

    二、生成器

    生成器也是迭代器的一种,如果想构建自己的迭代器,可以利用yield关键字,比如:

    def frange(start,end,step):
        x = start
        while x<end:
            yield x
            x += step
    
    for i in frange(1,10,0.5):
        print(i)
    

    结果:

    1
    1.5
    2.0
    2.5
    3.0
    3.5
    4.0
    4.5
    5.0
    5.5
    6.0
    6.5
    7.0
    7.5
    8.0
    8.5
    9.0
    9.5
    

    可以和range进行对比一下,但是需要注意的是range(start,end,step)函数中,step必须是int类型,否则出错,比如:

    for i in range(1,10,0.5):
        print(i)
    

    结果:

    for i in range(1,10,0.5):
    TypeError: 'float' object cannot be interpreted as an integer
    

    正确用法为:

    for i in range(1,10,1):
        print(i)
    

    结果:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    

    相关文章

      网友评论

          本文标题:迭代器和生成器

          本文链接:https://www.haomeiwen.com/subject/anwhaqtx.html