失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python_bomb----函数高级特性(生成器)

python_bomb----函数高级特性(生成器)

时间:2020-10-16 17:07:03

相关推荐

python_bomb----函数高级特性(生成器)

迭代

可以通过 for 循环来遍历 list 或 tuple,这种遍历我们称为迭代(Iteration)

只要是可迭代对象,都可以迭代,比如字典

默认情况下,字典迭代的是key值

如何让判断一个类型是否可迭代

from collections import Iterable #导入collections模块的Iterable类型判断方法print(isinstance({'abc':1},Iterable))True

列表生成式

Python 内置的非常简单却强大的可以用来创建 list的生成式

列表生成方法

for循环

#输出0~9之间偶数的平方li= []for i in range(0,10,2):li.append(i**2)li[0, 4, 16, 36, 64]

列表生成式

print([i**2 for i in range(0,10,2)])[0, 4, 16, 36, 64]

列表生成式相对循环语句,代码简洁

#找出1~100之间所有质数#质数(prime number)又称素数,有无限个。#质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数。def isprime(num):for i in range(2, num):if num % i == 0:return Falseelse:return Trueval = int(input("请输入一个数:"))print([i for i in range(2, val) if isprime(i)])请输入一个数:100[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

字典生成式

#合并大小写#key值最终为小写d1={'a':10,'b':3,'A':10,'B':8}print({k.lower():d1.get(k.upper(),0)+d1.get(k.lower(),0)for k,v in d1.items()}){'a': 20, 'b': 11, 'c': 13}

生成器

通过列表生成式,我们可以直接创建一个列表,受到内存限制,列表容量肯定是有限的

创建一个包含 100 万个元素的列表,占用很大的存储空间

生成器是什么?

在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的 list,从而节省大量的空间。在 Python 中,这种一边循环一边计算的机制,称为生成器(Generator)

读取生成器

next()for循环

#Fibnonacci数列#1,1,2,3,5,8,13,....#yield:函数中带有yield,那么这个函数的返回值就是一个生成器#如果要执行函数内容,需要调用next方法或者for循环#当执行next方法时,遇到yield程序停止#直到下一次next方法时,从上一次yiled停止的地方继续执行,遇到yeild停止def fibnnonacci(num): #num表示将来显示几个值a,b,count = 0,1,0 #count是已经显示过的次数while count<=num:yield ba,b = b,a+bcount+=1res = fibnnonacci(100)print(next(res))print(next(res))print(next(res))print(next(res))1123Process finished with exit code 0

如果觉得《python_bomb----函数高级特性(生成器)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。