我是靠谱客的博主 纯情白猫,这篇文章主要介绍python 中的 map() 函数——匿名函数:返回值是一个函数的地址,即函数对象,现在分享给大家,希望可以做个参考。

文章目录

      • map 函数支持自定义的函数
      • map 函数支持 lambda 函数
      • map 函数还支持多个列表的映射和计算
      • 通过lambda函数使返回值是一个元组:
      • 当不传入function时,map()就等同于zip(),将多个列表相同位置的元素归并到一个元组:
      • 通过map还可以实现类型转换
        • 将元组转换为list:
        • 将字符串转换为list:
        • 提取字典中的key,并将结果放在一个list中:

map是python内置函数,会根据提供的函数对指定的序列做映射

其语法是 map(function, iterable, …)

第一个参数接受一个函数名,
后面的参数接受一个或多个可迭代的序列,返回的是一个集合。
把函数依次作用在list中的每一个元素上,得到一个新的list并返回。
注意,map不改变原list,而是返回一个新list。
当不传入function时,map()就等同于zip(),将多个列表相同位置的元素归并到一个元组:

1、map方法可以接收函数作为参数,并将其映射于列表的多个元素。
2、Python 2 中返回列表,Python 3 中返回迭代器,需要使用 list方法再生成列表。
3、map 函数不仅支持自定义的函数和 lambda 函数,还支持 Python 自带的函数。

map 函数支持自定义的函数

复制代码
1
2
3
4
5
6
>>> l = map(lambda x: x ** 2, [1, 2, 3, 4, 5]) >>> print(l) <map object at 0x03553790> >>> print(list(l)) [1, 4, 9, 16, 25]

map 函数支持 lambda 函数

复制代码
1
2
3
4
5
6
7
8
del square(x): return x ** 2 map(square,[1,2,3,4,5]) # 结果如下: [1,4,9,16,25]

map 函数还支持多个列表的映射和计算

复制代码
1
2
3
4
5
6
7
>>> l1 = [1, 2, 3] >>> l2 = [4, 5, 6, 7] >>> l3 = [8, 9] >>> print(list(map(lambda x,y,z:x+y+z, l1, l2, l3))) [13, 16]

lambda 函数中的 x, y, z 分别对应列表 l1、l2 和 l3 中的元素,计算后的生成的列表长度取决于各个列表的最短长度。

通过lambda函数使返回值是一个元组:

复制代码
1
2
3
4
5
map(lambda x, y : (x**y,x+y),[2,4,6],[3,2,1]) # 结果如下 [(8,5),(16,6),(6,7)]

当不传入function时,map()就等同于zip(),将多个列表相同位置的元素归并到一个元组:

复制代码
1
2
3
4
5
map(None,[2,4,6],[3,2,1]) # 结果如下 [(2,3),(4,2),(6,1)]

通过map还可以实现类型转换

将元组转换为list:

复制代码
1
2
3
4
5
map(int,(1,2,3)) # 结果如下: [1,2,3]

将字符串转换为list:

复制代码
1
2
3
4
5
map(int,'1234') # 结果如下: [1,2,3,4]

提取字典中的key,并将结果放在一个list中:

复制代码
1
2
3
4
5
map(int,{1:2,2:3,3:4}) # 结果如下 [1,2,3]

下面来看一道关于 map 函数的经典考题:有两个字符串 A 和 B,现在要统计字符串 A 中有多少个字符也在字符串 B 中可以找到,常规函数解法如下:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
>>> strA = "aAAAbBCC" >>> strB = "aA" >>> def count1(str1, str2): a = 0 for c in str1: if c in str2: a += 1 return a >>> count1(strA, strB) 4

使用 map 函数经典解法如下

复制代码
1
2
3
4
5
6
>>> strA = "aAAAbBCC" >>> strB = "aA" >>> print(sum(map(strA.count, strB))) 4

分析下上面这段代码,
Python 自带的 string.count(char) 函数的作用是统计一个字符串 string 含有字符 char 的数量,在本例中 strB 相当于 char 的一个参数列表 [“a”, “A”],map 函数先统计 strA 中字符 a 的数量,再统计 strA 中字符 A 的数量,获得列表 [1, 3], 然后将它们相加,即可获得字符串 A 中总共有多少字符可以在 B 中找到。

最后

以上就是纯情白猫最近收集整理的关于python 中的 map() 函数——匿名函数:返回值是一个函数的地址,即函数对象的全部内容,更多相关python内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(87)

评论列表共有 0 条评论

立即
投稿
返回
顶部