官方文档:https://docs.python.org/zh-cn/3/library/functions.html#map
1 map()函数
map是python内置函数,以iterable中的每一个元素作为function的参数来调用,返回一个列表或者迭代器。把函数依次作用在list中的每一个元素上,得到一个新的list并返回。
注意:map不改变原list,而是返回一个新list。
- python2 中, map 返回 的是 list型 。
- python3 中, map 返回 的是 map object(filter对象)。需要再加上 转list 操作才能达到 python2下的效果。
map(function,iterable,...)
parameters: | function:函数 iterable:一个或多个序列 |
returns: | Python 2.x:返回列表。 |
2 map()函数的用法
栗子1:python2
a = [1, 2, 3, 4, 5]
def square(x):
return x * x
a = map(square, a)
print(a)
# result
[1,4,9,16,25]
-
通过使用lambda匿名函数的方法使用map()函数:
a = [1, 3, 5, 7, 9]
b = [2, 4, 6, 8, 10]
c = map(lambda x, y: x+y, a, b)
print(c)
# result
[3,7,11,15,19]
栗子2:python3
a = [1, 2, 3, 4, 5]
def square(x):
return x * x
b = map(square, a)
print(b)
# result
<map at 0x1acd1c94be0> # 是啥我也不知道
c = list(b)
print(c)
# result
[1, 4, 9, 16, 25]
- 通过使用lambda匿名函数的方法使用map()函数:
a = [1, 2, 3, 4, 5]
print(map(lambda x: x * x, a)) # 使用 lambda 匿名函数
print(list(map(lambda x: x * x, a)))
# result
<map object at 0x000001ACD1CA7668>
[1, 4, 9, 16, 25]
# 提供了两个列表,对相同位置的列表数据进行相加
a = [1, 3, 5, 7, 9]
b = [2, 4, 6, 8, 10]
print(map(lambda x, y: x + y, a, b))
print(list(map(lambda x, y: x + y, a, b)))
# result
<map object at 0x000001ACD1CA7710>
[3, 7, 11, 15, 19]
3 其他用法
- 当不传入function时,map()就等同于zip(),将多个列表相同位置的元素归并到一个元组:
a = map(None,[2,4,6],[3,2,1])
print(a)
# result
[(2,3),(4,2),(6,1)]
通过map还可以实现类型转换,
-
将元组转换为list:
a = map(int,(1,2,3))
print(a)
# result
[1,2,3]
- 将字符串转换为list:
a = map(int,'1234')
print(a)
# result
[1,2,3,4]
- 提取字典中的key,并将结果放在一个list中:
a = map(int,{1:2,2:3,3:4})
print(a)
# result
[1,2,3]
参考:https://blog.csdn.net/xu_xiaoxu/article/details/83339856
参考:https://blog.csdn.net/quanlingtu1272/article/details/95482253