语法:
map(func, seq1[, seq2,…])
1、第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个列表
2、如果func为None,作用同zip()
3、无法处理seq长度不一致、对应位置操作类型不一致的情况,报错
用法1、当seq只有一个时,函数func作用于这个seq的每个元素上,返回一个新的seq
#使用lambda
print(map(lambda x: x % 2, range(7)))
[0, 1, 0, 1, 0, 1, 0]
#使用列表解析
print([x % 2 for x in range(7)])
[0, 1, 0, 1, 0, 1, 0]
用法2、当seq多于一个时,map可以并行(注意是并行)地执行每个seq的元素
#返回列表:
print(map(lambda x , y : x ** y, [2,4,6],[3,2,1]))
[8, 16, 6]
#返回元组
print map(lambda x , y : (x ** y, x + y), [2,4,6],[3,2,1])
[(8, 5), (16, 6), (6, 7)]
#func函数为None时,相当于zip()
print map(None, [2,4,6],[3,2,1])
[(2, 3), (4, 2), (6, 1)]
用法3、map()函数可以实现将其他类型的数转换成list
***将元组转换成list***
map(int, (1,2,3))
[1, 2, 3]
***将字符串转换成list***
map(int, '1234')
[1, 2, 3, 4]
***提取字典的key,并将结果存放在一个list中***
map(int, {1:2,2:3,3:4})
[1, 2, 3]
***字符串转换成元组,并将结果以列表的形式返回***
map(tuple, 'agdf')
[('a',), ('g',), ('d',), ('f',)]
#将小写转成大写
def u_to_l (s):
return s.upper()
print map(u_to_l,'asdfd')