Python高阶函数---map和reduce

map函数

map(fn,lsd)
fn:是一个函数,可以使自己定义的,也可以是python内置的函数
lsd:是一个序列
功能:依次将lsd中的元素作用到fn上
属于惰性序列

通过map函数进行处理,将字符串型的列表装换称整型列表。

L = ["1","2","3","4","5"]
def func(key):
    dict1={"0":0,"1":1,"2":2,"3":3,"4":4,"5":5,"6":6,"7":7,"8":8,"9":9}
    return dict1[key]

res = list(map(func,L))
print(res)


F:\学习代码\Python代码\venv\Scripts\python.exe F:/学习代码/Python代码/day6/高阶函数---map.py
[1, 2, 3, 4, 5]

Process finished with exit code 0

reduce函数

reduce(fn,lsd)
fn:函数
lsd:序列
lsd中的前两个元素作用到fn上,然后得到一个结果,将得到的结果再次和第三个元素作用到fn上,依次类推
直到lsd序列中的所有的元素计算完毕为止。

通过reduce函数进行处理,将整型列表装转换成一个整数。

from functools import reduce
 
L = [1,2,3,4,5,6]
def func(var1,var2):
    return  var1*10 + var2
res = reduce(func,L)
print(res)


F:\学习代码\Python代码\venv\Scripts\python.exe F:/学习代码/Python代码/day6/高阶函数---reduce.py
123456

Process finished with exit code 0
from functools import reduce

L = ["2","4","6","7"]
res = list(map(int,L))
def func(a,b):
    return a*10 + b
res2 = reduce(func,res)
print(res2)


F:\学习代码\Python代码\venv\Scripts\python.exe F:/学习代码/Python代码/day6/高阶函数---reduce.py
2467

Process finished with exit code 0

这个是对列表中的值进行大小写装换。 

from functools import reduce

L = ["Jack","rose","TOM","JaxK"]
def func(var):
    return var.capitalize()
res = list(map(func,L))
print(res)


F:\学习代码\Python代码\venv\Scripts\python.exe F:/学习代码/Python代码/day6/高阶函数---reduce.py
['Jack', 'Rose', 'Tom', 'Jaxk']

Process finished with exit code 0

对复杂的列表进行提取数字处理。

from functools import reduce

L = ["as3","23fsa","3ft567g",["asd54","4vgtr5","sdfgf"],"sfgd"]
L1 = []
for var in L:
    if isinstance(var,list):
        for i in var:
            if isinstance(i,str):
                for j in i:
                    if j.isdigit():
                        L1.append(j)
    elif isinstance(var,str):
        for i in var:
            if i.isdigit():
                L1.append(i)
res = list(map(int,L1))
def func(a,b):
    return a*10 + b
res1 = reduce(func,res)
print(res1)



F:\学习代码\Python代码\venv\Scripts\python.exe F:/学习代码/Python代码/day6/高阶函数---reduce.py
32335675445

Process finished with exit code 0

猜你喜欢

转载自blog.csdn.net/qq_41112887/article/details/88767233