我是靠谱客的博主 纯情白猫,最近开发中收集的这篇文章主要介绍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 函数支持自定义的函数

>>> 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 函数

del square(x):
    return x ** 2
 
map(square,[1,2,3,4,5])
 
# 结果如下:
[1,4,9,16,25]

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


>>> 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函数使返回值是一个元组:

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

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

map(None,[2,4,6],[3,2,1])
 
# 结果如下
[(2,3),(4,2),(6,1)]

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

将元组转换为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 函数的经典考题:有两个字符串 A 和 B,现在要统计字符串 A 中有多少个字符也在字符串 B 中可以找到,常规函数解法如下:

>>> 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 函数经典解法如下


>>> 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 中的 map() 函数——匿名函数:返回值是一个函数的地址,即函数对象所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部