用生成器创建新的迭代方法

  • 1.思考:有的时候,我们会遇到这样的问题,python中常见内置方法如range(),reversed()解决不了我们的需求,我们则需要自己定义一种方法来实现。

  • 2.解决方法:使用生成器yield函数

    '''自定义方法'''
    def frange(start, end, foot):
        x = start
        while x < end:
            yield x
            x += foot
            
    
  • 3.使用方法

  • for循环对其进行迭代;

  • 可访问可迭代对象中元素的函数sum(),list()

  • 4.示例

    >>> def frange(start, end, foot):
    x = start
    while x < end:
        yield x
        x += foot

        
    >>> for i in frange(0, 5, 1.5):
        print(i,end=" ")
    
        
    0 1.5 3.0 4.5 
    >>> list(frange(0, 5, 0.125))
    [0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0, 1.125, 1.25, 1.375, 1.5, 1.625, 1.75, 1.875, 2.0, 2.125, 2.25, 2.375, 2.5, 2.625, 2.75, 2.875, 3.0, 3.125, 3.25, 3.375, 3.5, 3.625, 3.75, 3.875, 4.0, 4.125, 4.25, 4.375, 4.5, 4.625, 4.75, 4.875]
    >>> sum(frange(0, 5, 1))
    10
    ```
    
* 5.`注意`:
    * 函数中的`yield`语句会将函数转换成一个生成器。生成器只会在发生迭代操作时运行。

你可能感兴趣的:(用生成器创建新的迭代方法)