python创建生成器以及访问的方法详解

 更新时间:2023年11月03日 10:43:18   作者:惊瑟  
这篇文章主要介绍了python创建生成器以及访问的方法详解,与列表一次性地将数据全都加载到内存不同的是,生成器使用推断加载数据,每次只推断出一个对象,在数据量比较大时,可以节省内存,需要的朋友可以参考下

前言

与列表一次性地将数据全都加载到内存不同的是,生成器使用推断加载数据,每次只推断出一个对象,在数据量比较大时,可以节省内存。

这篇文章简单总结下创建生成器的方法,并用举一个生成器在斐波那契应用的例子。

一、创建生成器以及访问的方法

1. map

iter1 = map(lambda x:x, [0,1,2])

2. ()

iter2 = (x for x in range(3))

3.使用yield

def iter3():
    for i in range(3):
        yield i

看下它们的类型:

iter1 type is: <class 'map'>
iter2 type is: <class 'generator'>
iter3() type is: <class 'generator'>

其中,map类型也是生成器类型。如何访问一个生成器?以iter1为例,有以下方法:

# 1.一个个访问
print(next(iter1)) 

 # 2.使用for访问
for i in iter1:
    print(i)
    break
    
# 3.转化为列表访问
print(list(iter1)) 

输出:

0
1
[2]

二、生成器的应用

使用迭代法来求解斐波那契数列:

# 使用生成器构菲波那契数列,数列下标从1开始
def fib(n):
    a,b,i = 0,1,0
    while i<n:
        yield b
        a,b = b,a+b
        i += 1

def get_fib(n):
    # 此时fib(n)是一个生成器
    gener = fib(n)
    for i in range(n-1):
        next(gener)
    return next(gener)

print(get_fib(3))

到此这篇关于python创建生成器以及访问的方法详解的文章就介绍到这了,更多相关python生成器及访问方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现二维数组的对角线遍历

    python实现二维数组的对角线遍历

    这篇文章主要为大家详细介绍了python实现二维数组的对角线遍历,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • python使用html2text库实现从HTML转markdown的方法详解

    python使用html2text库实现从HTML转markdown的方法详解

    这篇文章主要介绍了python使用html2text库实现从HTML转markdown的方法,需要的朋友可以参考下
    2020-02-02
  • python使用requests设置读取超时时间

    python使用requests设置读取超时时间

    在Python中,使用requests库进行网络请求时,可以通过设置 timeout参数来指定读取超时时间,本文就来介绍一下,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • Python流行ORM框架sqlalchemy的简单使用

    Python流行ORM框架sqlalchemy的简单使用

    这篇文章主要介绍了Python流行ORM框架sqlalchemy的简单使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • python绘制高斯曲线

    python绘制高斯曲线

    这篇文章主要为大家详细介绍了python绘制高斯曲线,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • python process模块的使用简介

    python process模块的使用简介

    在python中大部分情况需要使用多进程,python提供了multiprocessing模块。multiprocessing模块的功能众多:支持子进程、通信和共享数据、执行不同形式的同步,提供了Process、Queue、Pipe、Lock等组件。本文将着重讲解process模块的使用
    2021-05-05
  • Python中还原JavaScript的escape函数编码后字符串的方法

    Python中还原JavaScript的escape函数编码后字符串的方法

    这篇文章主要介绍了Python中解析JavaScript的escape函数编码后字符串的方法,即Python中如何还原JavaScript escape函数编码后的字符串,需要的朋友可以参考下
    2014-08-08
  • 详解Python的Django框架中的templates设置

    详解Python的Django框架中的templates设置

    这篇文章主要介绍了Python的Django框架中的TEMPLATES设置,主要讲述了Django1.8版本后的一些新特性,需要的朋友可以参考下
    2015-05-05
  • 使用Python爬取最好大学网大学排名

    使用Python爬取最好大学网大学排名

    这篇文章主要介绍了如何使用Python爬取最好大学网大学排名,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Python实现端口复用实例代码

    Python实现端口复用实例代码

    这篇文章主要介绍了Python实现端口复用实例代码,需要的朋友可以参考下
    2014-07-07

最新评论