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使用html2text库实现从HTML转markdown的方法详解
这篇文章主要介绍了python使用html2text库实现从HTML转markdown的方法,需要的朋友可以参考下2020-02-02Python中还原JavaScript的escape函数编码后字符串的方法
这篇文章主要介绍了Python中解析JavaScript的escape函数编码后字符串的方法,即Python中如何还原JavaScript escape函数编码后的字符串,需要的朋友可以参考下2014-08-08详解Python的Django框架中的templates设置
这篇文章主要介绍了Python的Django框架中的TEMPLATES设置,主要讲述了Django1.8版本后的一些新特性,需要的朋友可以参考下2015-05-05
最新评论