本文主要是介绍Python学习笔记3——生成器(generator),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#生成器(generator),一边循环一边计算后续元素的机制,比起列表生成器可以节省大量空间,适用于包含过多元素,但是实际仅适用部分元素的列表生成;
#与列表生成器的写法区别:列表生成器使用[],生成器使用()
def GeneratorList(n):list1 = (x * x for x in range(1,n)) #使用生成器生成一个1*1到n*n的generator,若要输出generator所有元素,则需使用next(list1)的方法,也可以通过循环调用list2 = Fibonacci(n) #通过generator函数生成generatorlist3 = triangles(n) #通过generator函数生成杨辉三角lists = [list1,list2]for list in lists: for x in list: #通过循环打印generator所有元素print(x)#若一个函数定义中包含yield关键字,那么这个函数就是一个generator;
#在执行过程中,遇到yield就中断,下次则继续执行
def Fibonacci(max): #斐波拉契数列:除了第一个和第二个数外,任意一个数都可由前两个数相加得到n,a,b = 0,0,1while n < max:yield ba,b = b,a + bn += 1return 'done'"""
杨辉三角1/ \1 1/ \ / \1 2 1/ \ / \ / \1 3 3 1/ \ / \ / \ / \1 4 6 4 1/ \ / \ / \ / \ / \
1 5 10 10 5 1
"""
def triangles(max): #杨辉三角generatorlist_temp= [1]while len(list_temp) <= max:yield list_templist_temp.append(0) #在之前列表最后加一个0目的:在列表中下标为-1的为列表最后一个元素list_temp = [list_temp[i - 1] + list_temp[i] for i in range(0,len(list_temp))]
这篇关于Python学习笔记3——生成器(generator)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!