from functools importreduce#Python内置了map()和reduce()函数#map()#原型 map(fn, Lsd)#参数1是函数#参数2是序列#功能:将传入的函数依次作用在序列中的每一个元素,并把结果作为新的Iterator返回'''
def myMap(func, li):
reslist = []
for parase in li:
res = func(parase)
reslist.append(res)
'''#将单个字符串转成对应的字面量整数defchr2int(chr):return{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}[chr]
list1 =["2","1","6","5"]
res =map(chr2int, list1)#chr2int("2") chr2int("1") chr2int("6") chr2int("5")print(res)# print(list(res))# print(list1)#将整数元素的序列转为字符型#[1, 2, 3, 4] ["1", "2", "3", "4"]
l =map(str,[1,2,3,4])print(list(l))#reduce(fn, Lsd)#参数1是函数#参数2是序列#功能:一个函数作用在序列上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素累计运算#reduce(f, [a, b, c, d])#f(f(f(f(a, b), c), f), d)#求一个序列的和
list2 =[1,2,3,4,5]#1 + 2#1 + 2 + 3#1 + 2 + 3 + 4#1 + 2 + 3 + 4 + 5defmySum(x, y):return x + y
r =reduce(mySum, list2)print("r =", r)#将字符串转为对应字面量数字defstr2int(str):deffc(x, y):return x *10+ y
deffs(chr):return{"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}[chr]returnreduce(fc,map(fs,list(str)))
a = str2int("12367")print(a)print(type(a))
2、高阶函数filter
'''
原型:filter(fn, lsd)
参数1为函数
参数2为序列
功能:用于过滤序列
把传入的函数依次作用于序列每个函数,根据返回的是TRUE还是false决定是否保留该函数
'''
list1 =[1,2,3,4,5,6,7,8,9]deffunc(num):#偶数保留if num%2==0:returnTrue#基数剔除returnFalse
l =filter(func, list1)print(list(l))print("****************************************************")
data =[["姓名","年龄,""爱好"],["tom",25,"无"],["hanmeimei",26,"金钱"]]deffunc2(value):
value =str(value)if value =="无":returnFalsereturnTruefor line in data:
m =filter(func2, line)print(list(m))