map简述

map()用于将一个序列对象的所有元素经函数处理后返回。
map()是python的一个内置函数,它的基本样式是:map(func, seq)func是一个函数,seq是一个序列对象。
在执行的时候,序列对象seq中的每个元素,按照从左到右的顺序,依次被取出来,并塞入到func那个函数里面,并将func的返回值依次存到一个list中(Python2)。

Python 3.x 返回迭代器所以Python 3.x要加**list()**函数将迭代器转化为列表

  1. >>> def sqr(x):
  2. return x**2
  3. ...
  4. >>> map(sqr,items) # 先定义了一个sqr函数,再使用map,构造一个新列表 [1, 4, 9, 16, 25]
  5. >>> map(lambda x: x**2,items) # 这里使用了lambda [1, 4, 9, 16, 25]
  6. >>> [ x**2 for x in items ] #这个列表解析式最方便,而且可读性强 [1, 4, 9, 16, 25]

要点

  • 对iterable中的每个元素,依次应用function的方法(这本质上就是一个for循环)。
  • 将所有结果返回一个list。(Python2)
  • 如果参数很多,则对多个参数并行执行function。


例1:

  1. >>> lst1 = [1,2,3,4,5]
  2. >>> lst2 = [6,7,8,9,0]
  3. >>> lst3 = [7,8,9,2,1]
  4. >>> 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’]

  1. def normalize(name):
  2. x=name.lower() # 全部变成小写
  3. return x.capitalize() # 首字母大写
  4. L1 = ['adam', 'LISA', 'barT']
  5. L2 = list(map(normalize, L1))
  6. print(L2)
  7. # ['Adam', 'Lisa', 'Bart']

常用

list(map(int,input().split()))