Python:高阶函数map与reduce以及filter和sorted的使用

#map and reduce 是进行分布式处理的python 高阶函数
map () :将集群的数据进行解析
reduce() 将解析后的数据集合
filter() 用于过滤序列传入的函数作用于序列的每个元素返回True or False
#map(args1,args2) args1 :Function ,args2 :list
接收一个list和一个函数,把list中的每一个元素作用与Function,通过list接收
函数作用在列表中的每一个元素,把结果作为一个可以迭代的对象返回
示例1:

题目:将整数元素的序列转为字符型
l = map(str,[1,2,3,4])
print(list(l))

示例2:

def CharToInt(chr) :
      return {"0":0,"1":1,"2":2}[chr]  #将单个字符转为对应的字面量整数
listStr={"0","1","2"}
val = map(CharToInt,listStr)             #结果放在序列中
print(val)                                  #返回值为惰性列表
print(list(val))     #返回值为一个列表

示例3:

import math
def Conculate(x,y,Func) :
    return Func(x)+Func(y)
var = Conculate(25,9,math.sqrt)
print(var)

#reduce(args1,args2) args1 :Function args 2:list 返回值为一个结果
#Function(args1,args2),Function必须接收两个参数
#将数据处理的内容归总,Func必须接受两个参数,把结果和序列的下一个元素累计计算

from functools import reduce      #使用reduce()导入functools包

实例1:

#对列表内的元素求和
list = [1,2,3,4,5]
def Sum(x,y)
	return x+y
var = reduce(Sum,list)
print(var)

示例2:

#将字符串转化为对应字符量
def Str(str) :
    def Func (x,y) :
        return x * 10 +y
    def FuncTwo(chr) :
        return {"0": 0, "1": 1, "2": 2}[chr]
    return reduce(Func,map(FuncTwo,list(str)))
a = Str("12")
print(a)

#filter(args1,args2) args1:Function ,args2 :list
#Function对list中的每个元素进行判断和过滤,返回bool值,通过list接收
实例:

需求:过滤传入序列中的偶数
list1 = [1,2,3,4,5,6]
def func(num) :
    if num % 2 == 0 :
        return True
    return False
val = filter(func,list1)   #如果为True则将值传给val
print(list(val))

实例:

需求:过滤列表中的字符串“无”
listStr =[["姓名","年龄","爱好"],["Tom","25","无"],["Hanmei","26","Money"]]
def Func(Str) :
    if str(Str) =="无":
        return False
    return True
for line in listStr  :   #遍历列表中的元素
    m = filter(Func,line)
    print(list(m))

示例3:
#过滤列表中的空字符串

def Funct(x) :
    return x and len(x.strip()) > 0
val = filter(Funct,["Herry","","Hani","Gerry"])
print(list(val))

#示例4
过滤1~100中平方根为整数

def Functions(x) :
    if int(math.sqrt(x)) == math.sqrt(x) :
        return x
val = filter(Functions,range(1,101))
print(list(val))

#sorted()排序: 该排序默认为升序排列
sorted(lsd,key) :key接受函数定义的排序方法
实例:

需求:对 Data = [4,7,-2,-6,3]中的元素按照绝对值大小排序
val = sorted(Data,key = abs)
print(val)
需求2:对Data进行降序排列
val = sorted(Data,reverse= True)    #如果reseve = True 进行降序排列
print(val)
需求3:通过传入的函数修改排序的条件
#按照字符串长短来排
DataList = ["a00000001","c000","f0005","v008"]
def myline(str) :
    return len(str)
val = sorted(DataList,myline)
print(val)

猜你喜欢

转载自blog.csdn.net/Mr_zhangbz/article/details/83271307