map()函数是Python内置的高阶函数,它接收一个函数f和一个list,并把函数f作用在list的每个元素上。从而得到一个f处理过的新的list返回。下面举个栗子:
1. 例1
list [1, 2, 3, 4, 5, 6, 7]
我们要得到list的每个元素都平方后的,新的list,怎么做呢?当然,这儿就会用到map()这个函数了。
没错,我们需要先定义一个f函数(用来给每个元素平方的):
def f(x):
return x*x
然后map()函数:
print( list(map(f, [1, 2, 3, 4, 5, 6, 7])))
输出结果肯定就是[1,4,9,16,25,36,47]
需要注意的是,这里返回的list已经是一个新的list了,原有的list [1, 2, 3, 4, 5, 6, 7]还是原来的,没有改变。
2.list里面的元素是任意类型的情况
list里面的数据类型是任意类型的map()函数也是支持的,只需要我们定义的处理函数兼容这些数据类型就可以。例如有个列表元素是一组英文单词,现在有些单词没有严格按照大小写规则来书写。我们可以通过函数来把它纠正正确。
['adam', 'LISA', 'barT']
首先我们先定义一个处理函数
def format_name(s):
s1=s[0:1].upper()+s[1:].lower();
return s1;
print (list(map(format_name, ['adam', 'LISA', 'barT'])))
输出的结果是:['Adam', 'Lisa', 'Bart']
2.map()函数和lambda的共同使用
上面的代码我们就可以写成
print(list(map(lambda x:x*x,[1,2,3,4,5,6])))
注意:在Python 3.x中map返回的是一个iterator所以要转list一下才可以