标签:
---map()
首先来看一看map()函数,map函数接受两个参数,第一个参数是算法,第二个参数是具体数值(注意,数值必须为可迭代的)。即map(fun,iterable)
map函数就是将具体数值根据算法进行计算,并将结果保存为一个迭代器。我们知道,迭代器很‘懒‘,通过调用next函数一次只输出一个值。
来看一个最简单的map()例子。
#给定一组数1,2,3,4,5,6。要求求出每个数加一后的值 def fun(x): x=x+1 return x li=[1,2,3,4,5,6] r=map(fun,li) print(type(r)) for i in r: print(i) #结果: <class ‘map‘> 2 3 4 5 6 7
使用map对一行进行多个赋值
x,y,z=map(int,input(‘please input your number:‘).split()) print(x,y,z)
如何利用map()将名字首字母大写?
def daxie(name): return name[0].upper+name[1:] def daxie2(name): return ‘%s%s‘%(name[0].upper(),name[1:]) a=[‘linghuchong‘,‘dongfangbubai‘] r=map(daxie2,a) for i in r: print(i)
--reduce
reduce同map函数一样,也是接受两个参数,但不同的是,reduce函数将当前数值的计算结果与下一个数值的计算结果进行累积计算。
即:reduce(f,[1,2,3,4])=f(f(f(1,2),3),4)
来看一个简单的reduce函数的例子
# from functools import reduce def leijia(x,y): #注意,我们所定义的函数必须要接受两个参数,否则会报错 return x+y print(reduce(leijia,[1,2,3,4,5])) #结果 15 #当然也可多加默认参数 from functools import reduce def leijia(x,y,z=2): return x+y+z print(reduce(leijia,[1,2,3,4,5])) #结果: 23
--filter
同上两个函数一样,接受两个参数,第一个参数为函数名,第二个参数为序列。但filter根据序列中各个元素作用与函数时,函数返回结果(True/False)来决定该元素是否保留。
来看一个筛选偶数的简单例子:
def select(num): if num%2==0: return True else: return False r=filter(select,[1,2,3,4,5,6]) for i in r: print(i)
--sorted
sorted顾名思义,就是排序的意思。
>>> sorted([22,33,55,11,44])
[11, 22, 33, 44, 55]
sorted还可以接受一个key函数,实现自定义排序
>>> sorted([22,33,-11,44,-55],key=abs)
[-11, 22, 33, 44, -55]
python基础之map/reduce/filter/sorted
标签:
原文地址:http://www.cnblogs.com/MnCu8261/p/5527570.html