python如何使用map、reduce函数
admin
2023-07-24 01:42:41
0

格式:

        map(函数, list)

        reduce(函数,list)

区别:

        1.map分别作用于list的每个元素,返回新的列表

        2.reduce将list的每个元素整合,返回一个新的

优势:

    1.map、reduce自带for循环,减少了代码量

一、map 的使用

#!/usr/bin/python

def f(x):
    return x*x

lis = [1, 2, 3, 4, 5]
map_list =map(f, lis)  #将lis的元素分别在f()函数中做运算
print lis
print map_list

python如何使用map、reduce函数

#str
map_list1 = map(str, lis); #将lis的元素分别在str函数中转换成char类型
print lis
print map_list1

python如何使用map、reduce函数

二、reduce 的使用

def fsum(x, y):
    return x+y;

lis = [1, 3, 5, 7]   
lis1 = reduce(fsum, lis)
print lis1

python如何使用map、reduce函数

三、map \ reduce混合使用

def fsum(x, y):
    return x+y;

lis = [1, 3, 5, 7]   
lis1 = reduce(fsum, lis)
print lis1

python如何使用map、reduce函数


#获取数字和
def fadd(x, y):
    return x*10+y
   
num = reduce(fadd, lis);
print 'get num:', num

stri = str(num);
print 'num2str:', stri;

python如何使用map、reduce函数


#将str转数字
def ch3num(s):
    return {'0':0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[s]  #此函数执行返回过程如下:

                            # {'0':0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[stri[0]] --->return 1   

                            # {'0':0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[stri[1]] --->return 3 

                            # {'0':0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[stri[2]] --->return 5  

                           # {'0':0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[stri[4]] --->return 7

lis= map(ch3num, stri);
print 'str2num:',lis;

python如何使用map、reduce函数

#将数字列表lis整合
def f(x,y):
    return x*10+y;

num = reduce(f, strin);
print 'add:', num;

python如何使用map、reduce函数

四、难点记录

暂时无力解决,先记录,待深入后再回头看

整理成一个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))
lis = ['1', '2', '3']    
num = str2int(lis)
print num;

运行结果:123

还可以用lambda函数进一步简化成:

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]
def str2int(s):
    return reduce(lambda x,y: x*10+y, map(char2num, s))
    
lis = ['1', '2', '4']    
num = str2int(lis)
print num;

运行结果:124

相关内容

热门资讯

宇通用户中心再落三城 三直实体... 6月23日,宇通南宁、山东、河北三大用户中心同步开业,大批客户、媒体代表等齐聚各地用户中心,沉浸式体...
中国对美反制:10家美实体被列... 【大河财立方 记者 闫文瑞】 6月25日,商务部举行例行新闻发布会。就中方近期将10家美国实体列入出...
信阳科技创新新政征求意见:拟设... 【大河财立方消息】6月24日,信阳市科学技术局发布通知,就《信阳市进一步加强科技创新 若干政策措施(...
江西省商务厅原党组书记、厅长谢... 日前,江西省商务厅原党组书记、厅长谢一平(正厅级)涉嫌受贿罪一案,由江西省监察委员会调查终结,移送检...
阿曼湾船只遇袭,国际海事组织暂... 新华社伦敦6月25日电(记者高文成)国际海事组织25日宣布,一艘船舶当天在阿曼湾遭袭,该组织决定暂停...
男子往尿道塞25厘米数据线,硬... 近日,深圳一名28岁男子L先生(化名),把一根25厘米长的数据线塞进了尿道,结果整条线塞进去,拔不出...
美最高法院裁决支持特朗普强硬移... 新华社华盛顿6月25日电(记者颜亮)美国最高法院25日作出两项有关移民案件的关键裁决,支持特朗普政府...
霍尔木兹海峡通航量恢复至战事前... 标普全球能源公司25日发布报告说,24日共有78艘船舶通过霍尔木兹海峡,创下伊朗战事爆发以来单日最高...
男子骨折住院两月后离世,家属质... “父亲入院时只是腿骨折,身体没有其他问题,我们怎么也没想到,住了两个月院,人就这么没了。”6月25日...
女孩在网红景点拍照时坠湖身亡,... 6月17日,安徽淮南网红景点天目湖一名15岁女孩拍照时滑入湖中,不幸遇难。6月25日,据极目新闻报道...