您的位置:首页 > 编程语言 > Python开发

Python 几个内建函数: map, reduce,filter,sorted 整理

2015-01-19 17:56 1016 查看
python 的一个特点就是 代码简洁, 很大一部分的功劳就是其提供了很常用的built_in 函数; 

最近系统的学习了一下,python的几个很常用的 函数 map,reduce,filter,sorted, 做一下总结。

其实这几个都是高阶函数(把函数作为参数传入的函数称为高阶函数)

 map                                                                                                                        

          

 首先
map()
函数接收两个参数,一个是函数,一个是列表,
map
将传入的函数依次作用到列表的每个元素,并把结果作为新的list返回。

形式: map(function,list)

   比如说 要将一个 列表的数字 转换为字符型:可以通过遍历整个列表来解决:

L=[]
for i in range(1,10):
L.append(str(i))
print L
    但是如果使用map()的话 可以很简洁的完成:
print map(str,range(1,10))

当然自己可以定义function,然后在map里面直接调用,很方便

reduce                                                                                                                              

reduce 和map的形式完全一样,reduce(function,list)
       

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

就相当于函数的迭代  

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


          比如举一个简单的例子,求一个列表的和:(当然可以直接sum()完成)

def SUM(x,y):
return x+y
print reduce(SUM,range(1,10))


      将相当于对[1,2,3,4.....]先执行1+2 然后将结果3作为x,列表的下一个元素3作为y再次执行SUM(x,y)函数

filter                                                                                                           
                     

         和
map()
reduce()
类似,
filter()
也接收一个函数和一个列表。
filter()
把传入的函数依次作用于每个元素,然后根据返回值
True
还是
False
决定保留还是丢弃该元素。最后仍然返回一个
过滤之后的列表

例如找出在一个str 找出 字母,筛选掉非字母:

def test(s):
return s.isalpha()
print filter(test,'abc134sfs')

      这样在 对list处理的时候,有时候会很方便, 自定义function

sorted
                                                                                                                               

          排序算法,十分常用,在python中 有sorted()这个内置函数供使用, 排序实质就是比较两个元素的大小 

一般默认的是 : 

对于两个元素
x
y
,如果认为
x
< y
,则返回
-1
,如果认为
x
== y
,则返回
0
,如果认为
x
> y
,则返回
1
 


这个在具体构造比较函数很有用。

继续说sorted()   首先sorted可以直接接受一个列表作为参数:  (前提是列表中元素可以比较)

>>> sorted([36, 5, 12, 9, 21])
[5, 9, 12, 21, 36]


 接着,既然
sorted()
函数也是一个高阶函数,那么它就可以以一个函数作为参数,这个函数就可以是
比较大小的函数:

 形式 sorted(list,function)

 看例子:

def cmp(x,y):
if x<y:
return 1
elif x==y:
return 0
else:
return -1

print sorted([1,3,2,5,6,8],cmp)


这个就是逆序排序,就是从大到小排序,是因为改变了比较大小的标准。

这几个内建函数,或者配合上lambda匿名函数, 会让你的python代码变得很简洁无比~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  map filter reduce sorted
相关文章推荐