map简述
map()用于将一个序列对象的所有元素经函数处理后返回。map()是python的一个内置函数,它的基本样式是:map(func, seq),func是一个函数,seq是一个序列对象。
在执行的时候,序列对象seq中的每个元素,按照从左到右的顺序,依次被取出来,并塞入到func那个函数里面,并将func的返回值依次存到一个list中(Python2)。
Python 3.x 返回迭代器。 所以Python 3.x要加**
list()**函数将迭代器转化为列表。
>>> def sqr(x):return x**2...>>> map(sqr,items) # 先定义了一个sqr函数,再使用map,构造一个新列表 [1, 4, 9, 16, 25]>>> map(lambda x: x**2,items) # 这里使用了lambda [1, 4, 9, 16, 25]>>> [ x**2 for x in items ] #这个列表解析式最方便,而且可读性强 [1, 4, 9, 16, 25]
要点
- 对iterable中的每个元素,依次应用function的方法(这本质上就是一个for循环)。
- 将所有结果返回一个list。(Python2)
- 如果参数很多,则对多个参数并行执行function。
例1:
>>> lst1 = [1,2,3,4,5]>>> lst2 = [6,7,8,9,0]>>> lst3 = [7,8,9,2,1]>>> map(lambda x,y,z: x+y+z, lst1,lst2,lst3) 5. [14, 17, 20, 15, 6]
这样很方便地将三个列表元素各自求和,合并在了一起。
例2:
利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。
例:输入:[‘adam’, ‘LISA’, ‘barT’],输出:[‘Adam’, ‘Lisa’, ‘Bart’]
def normalize(name):x=name.lower() # 全部变成小写return x.capitalize() # 首字母大写L1 = ['adam', 'LISA', 'barT']L2 = list(map(normalize, L1))print(L2)# ['Adam', 'Lisa', 'Bart']
常用
list(map(int,input().split()))
