map/fileter
一、生成器,generator,节省内存,但是增加了CPU的计算时间
(下节课讲函数怎么变成生成器)
每次循环的时候,就按照这个规则(自己定义的逻辑)去生成一个数据。
res = [ 'a','1' ]
只有在每次循环的时候,才按照这个规则去生成数据。
all = (i for i in range(5)) print(all)# generator生成器
附:列表生成式
num = [str(i).zfill(2) for i in range(10)]# list nums = ( str(i).zfill(2) for i in range(10) )# 生成器,外层为[],则为列表生成式,外层为(),则为生成器 print(nums) for n in nums: print(n)
二、map,循环调用函数
def makir(dir_name): if not os.path.isdir(dir_name): os.mkdir(dir_name) return True dir_names = ['dir1','dir2','dir3'] # list(map(makir,dir_names))# 循环帮你调用函数
三、filter,过滤
# 过滤,它把函数处理结果为假的数据过滤掉
# 只保留函数返回真的数据
def my(num): if num%2==0: return True res = list( filter(my, range(10) ))# 过滤,它把函数处理结果为假的数据过滤掉 res2 = list( map( my,range(10) ) )# 不管返回什么,都拿到全部结果 print('filter...res',res) # 运行结果:filter...res [0, 2, 4, 6, 8] print('map...res2',res2) # 运行结果:map...res2 [True, None, True, None, True, None, True, None, True, None]