码迷,mamicode.com
首页 > 编程语言 > 详细

python基础之map/reduce/filter/sorted

时间:2016-05-27 21:35:30      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

---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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!