Python 中的map、reduce函数用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#-*- coding:UTF-8 -*-
 
#map()函数接受两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回
 
def   f(x):
    return  x*x
 
result=map(f,[1,2,3,4,5])
print  result    # ==>> [1, 4, 9, 16, 25]
 
#map()作为高阶函数,它把运算规则抽象了,我们还可以计算任意复杂的函数,比如把list所有的数字转为字符串:
 
print  map(str,[1,2,3,4,5])   # ==>>  ['1', '2', '3', '4', '5']
 
 
#reduce  把一个函数作用在一个序列上,reduce同样必须接收两个函数,reduce把结果继续和序列和下一个元素做累积计算,其效果是:
#reduce(f,[x1,x2,x3,x4])=f(f(f(x1,x2),x3),x4)
#对一个序列求和,可以用Python内建函数sum(),也可以用reduce来实现:
def  add(x,y):
    return x+y
print  reduce(add,[1,3,5,7,9])    #  ==>> 25
 
#把序列[1,3,5,7,9]变成整数13579
 
def  fn(x,y):
    return  x*10+y
 
print  reduce(fn,[1,3,5,7,9])    # ==>> 13579
 
#字符串也是一个序列,配合map,可以写出把str转为int的函数
def char2num(s):
    return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]
 
print  reduce(fn,map(char2num,'13579'))  # ==>>  13579
 
#整理成一个str2int的函数:
 
def   str2int(s):
    def  fn(x,y):
        return   x*10+y
    def  char2num(s):
        return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s]
    return  reduce(fn,map(char2num,s))
 
print  str2int(['1','3','5','7','9'])   # ==> 13579
 
 
#利用lambda函数进一步简化
     
def   str2int2(s):
    return reduce(lambda x,y:x*10+y,map(char2num,s))
 
 
 
     
     
    

 

posted @   记忆残留  阅读(509)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示