迭代
可以通过 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----函数高级特性(生成器)》对你有帮助,请点赞、收藏,并留下你的观点哦!