map , filter , reduce ,zip

简单使用map , filter , reduce ,zip请参照: https://www.bilibili.com/read/cv1517879

如需进阶 lambda 请参考此链接第一条7篇  https://www.zhihu.com/question/21936396/answer/121880616

写代码之前请一定考虑好 输入输出 类型和语义

 

此博客记录一些组合操作: 

# 挑选所有有数字特征的名字   dict [(str,obj)] ->  dict [(str,obj)] -> [str]

sample = r[0][0][0] 
temp = filter(lambda x:not isinstance(x[1],str) and  not isinstance(x[1],dict) and  not isinstance(x[1],tuple),sample.items())
keys = list(map(lambda x:x[0],temp) )

 # 挑选特征符合之前的名字  (dict,dict)  ->  (dict,dict) 

# dict -> dict
def choose_items(d):
    return dict(filter(lambda x: x[0] in keys, d.items()))
# (dict,dict)->(dict,dict)
def choose_items_tuple(x):
    return (choose_items(x[0]),choose_items(x[1]))
# [(dict,dict)]->[(dict,dict)]
def choose_items_s(x):
    return map(choose_items_tuple,x)
# [[(dict,dict)]]->[[(dict,dict)]]
def choose(x):
    return map(choose_items_s,x)

feature = choose(r)

# [[(dict,dict)]] -> [[dict]]

## (dict,dict)-> dict
### ([(str,float)],[(str,float)])-> [((str,float),(str,float))]
def a(x):
    return zip(x[0].items(),x[1].items())
### [((str,float),(str,float))] -> [(str,float)]
#### ((str,float),(str,float)) -> (str,float)
def b(x):
    return (x[0][0],x[0][1]-x[1][1])
#### map
def c(x):
    return map(b,x)

## [(dict,dict)]-> [dict]
def d(x):
    return map(lambda y:c(a(y)),x)

## [[(dict,dict)]]-> [[dict]]
def e(x):
    return map(d,x)

# 平均  # [[[(str, float)]]] ->  [[(str, float)]]

## [[(str, float)]] -> [(str, float)]


##1 [[(str, float)]] -> [(str, [float])]

###1  [[(str, float)]] -> [[(str, [float])]]
#### [(str, float)] -> [(str, [float])]
##### (str, float) -> (str, [float])
def p(x):
    return (x[0],[x[1]])   
##### map
def p2(x):
    return map(p,x)
#### map
def p3(x):
    return map(p2,x)

###2   [[(str, [float])]] -> [(str, [float])]
#### [(str, [float])] -> [(str, [float])] -> [(str, [float])]
#####1 zip [(str, [float])] -> [(str, [float])] -> [((str, [float]), (str, [float]))]
def p4(x,y):
    return zip(x,y)
#####2 [((str, [float]), (str, [float]))] -> [(str, [float])]
###### ((str, [float]), (str, [float])) ->  (str, [float])  链表链接
def p5(x):
    return (x[0][0],x[0][1]+x[1][1])
###### map
def p6(x):
    return map(p5,x)
##### pipe 
def p7(x,y):
    return p6(p4(x,y))
#### reduce
def p8(x):
    return reduce(p7,x)
### pipe
def p9(x):
    return p8(p3(x))


##2 [(str, [float])] -> [(str, float)]
### (str, [float]) -> (str, float)
def p10(x):
    temp = list(x[1])
    mean = float(sum(temp))/float(len(temp))
    return (x[0], mean)
### map
def p11(x):
    return map(p10,x)
## pipe
def p12(x):
    return p11(p9(x))
## map
def p13(x):
    return map(p12,x)

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值