python学习笔记 map&&reduce

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习笔记 map&&reduce相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

1.map

1)map其实相当对吧运算符进行一个抽象,返回的是一个对象,但是这里不知道为什么不可以对一个map返回变量打印两次,难道是因为回收了?

def f(x):
    return x*x

tmp = map(f,range(6))
tmps = map(str,range(6))
print (list(tmp))
#print (list(tmps))
print (type(range(6)))#range返回的就是range类型<class ‘range‘>
print (set(tmps))
print(list(tmps))#此时的输出不在是range6的List而是一个空的[]

2)reduce 需要两个以上的参数才能使用,一般是作用域一个list上的,比如下面的求和

技术分享
1 tadd = reduce(add,range(6))
2 print (tadd)
3 tadd = reduce(add, [x for x in range(6) if x%2 != 0])
4 print (tadd)
View Code

reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)


技术分享
 1 # -*- coding: utf-8 -*-
 2 """
 3 Spyder Editor
 4 
 5 This is a temporary script file.
 6 """
 7 from functools import reduce
 8 tadd = reduce(add,range(6))
 9 print (tadd)
10 tadd = reduce(add, [x for x in range(6) if x%2 != 0])
11 print (tadd)
12 tadd = reduce(fn,[x for x in range(9) if x%2 != 0])
13 print (tadd)
View Code

3)对于一些版本的简化:

技术分享
 1 from functools import reduce
 2 def f(x):
 3     return x*x
 4 
 5 def add(x1,x2):
 6     return x1+x2
 7 def fn(x1,x2):
 8     return 10*x1+x2
 9 
10 def char2num(s):
11     return {0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9}[s]
12 
13 def str2int(s):
14     def char2num(s):
15         return {0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9}[s]
16         
17     def fn(x1,x2):
18         return 10*x1+x2
19     return reduce(fn,map(char2num,s))
20 def str2int_2(s):
21     return reduce(lambda x,y:x*10+y,map(char2num,s))
22 
23 tmp = map(f,range(6))
24 tmps = map(str,range(6))
25 print (list(tmp))
26 #print (list(tmps))
27 print (type(range(6)))#range返回的就是range类型<class ‘range‘>
28 print (set(tmps))
29 print(list(tmps))#此时的输出不在是range6的List而是一个空的[]
30 
31 tadd = reduce(add,range(6))
32 print (tadd)
33 tadd = reduce(add, [x for x in range(6) if x%2 != 0])
34 print (tadd)
35 tadd = reduce(fn,[x for x in range(9) if x%2 != 0])
36 print (tadd)
37 print (reduce(fn,(map(char2num,213))))
38 print (str2int(1231))
39 print (str2int_2(321))
View Code

 

---恢复内容结束---




以上是关于python学习笔记 map&&reduce的主要内容,如果未能解决你的问题,请参考以下文章

&lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第11章 | 文件和素材

Go语言学习笔记数组 & 切片 & map

Elasticsearch学习笔记-索引库操作&文档操作

python学习笔记-列表&字典

python学习笔记-(十四)进程&协程

&lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第12章 | 图形用户界面