# map# map : what why how# http://devdocs.io/python~3.6/library/functions#map 官方文档# 返回一个迭代器,该迭代器将函数应用到可迭代的每一项,从而产生结果# 不用for循环,就能将序列中的数据一一映射到给定的处理函数,快速对一个序列的数据进行各种操作# 是代码更简单

map?"""Init signature: map(self, /, *args, **kwargs)Docstring: map(func, *iterables) --> map object函数用--------------------> 返回的map对象"""

num = [1,3,5,7,9]# for 循环new_num = []for i in num: y = i + 1 new_num.append(y)print(new_num)

[2, 4, 6, 8, 10]

# mapdef add(x): return(x+1)map(add, num)

<map at 0x14d150489e8>

list(map(add, num))

[2, 4, 6, 8, 10]

# 字符串处理str_list = ['lilei', 'coop', 'hanmei']def change(s:str): return s.capitalize()list(map(change, str_list))

['Lilei', 'Coop', 'Hanmei']

# filter# 从可迭代的元素中构造一个迭代器,函数返回true,iterable可以是一个序列,一个支持迭代的容器# 或者一个迭代器,如果函数为None,则假定表示函数为false,即false的所有元素都被删除# 不用for循环,就能将序列中数据一一映射到给定的处理函数,函数中添加了真假判断,True则返回# 相应的数据,最终得到筛选后的序列,使得代码更简单

my_list = [11,22,33,44,55,343,66,77]new_list = []for i in my_list: if 20 < i < 60: new_list.append(i)print(new_list)

[22, 33, 44, 55]

# filter 首先是构造一个过滤田间的函数,然后才能使用filterdef choose(x): if 20 < x < 50: return Truedef choose1(y): return 20< y < 50filter(choose, my_list)list(filter(choose, my_list))

[22, 33, 44]

# 字符串处理str_list = ['lilei','coop','coop2','hanmemei','china']import redef coop(s:str): return re.search('coop', s)filter(coop, str_list)list(filter(coop, str_list))

['coop', 'coop2']

# reduce 处理数字列表的连乘, 累加# 将两个from functools import reducenum = [1,3,5,7,9]sum = 0for i in num: sum += iprint(sum)

25

sum = 1for i in num: sum *= iprint(sum)

945

# 定义函数def sum(x, y): return x + ydef cheng(x, y): return x * yreduce(sum, num)

25

reduce(cheng, num)

945