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]

 

posted @ 2018-07-11 13:58  灿烂初秋  阅读(193)  评论(0编辑  收藏  举报