由于map函数十分重要,在这里用较大篇幅细讲一下
目录
一、map函数的定义
二、map函数实例
对数列中的每个元数求平方
求两个数列中对应元素的和
求数列中每个元素的长度
把数列中每个英文元素转换成对应的大写
将字符串转换成数值数列
提取字典中的键
map函数是Python中常用的内置函数,它会根据提供的函数对指定序列做映射。可以用来替换for循环语句,在不使用任何循环的情况下对所有指定元素进行迭代,让代码看起来更简洁。其基本调用语法如下:
map(func, *iterables)
func:函数。
*iterables:一个或多个序列。
如果我们要用循环函数对数列中的每个数求平方,可用如下代码:
new_list = []
for i in [3, 4, 5, 6]:
new_list.append(i**2)
print(new_list)
得到结果:
[9, 16, 25, 36]
而用map函数一行代码直接搞定,具体如下:
list(map(lambda x:x**2, [3, 4, 5, 6]))
得到结果:
[9, 16, 25, 36]
其中lambda x:x**2是函数,[3, 4, 5, 6]是原始数列,返回的结果是根据函数对原始数列做的映射。不过map的结果要通过list函数才能显示出来。
有的人可能会说a是一个数列,b是另一个数列,求两个数列的和那还不简单,直接a+b不就好了。那我们来做个小实验,看看python中两个数列直接用+加起来会得到什么,代码如下:
a = [2, 6, 3]
b = [3, 4, 5]
a + b
得到结果:
[2, 6, 3, 3, 4, 5]
可以发现python中两个数列求+,直接将两个数列拼接后返回。聪明的你想到用map函数怎么操作了吗?具体代码如下:
a = [2, 6, 3]
b = [3, 4, 5]
list(map(lambda a,b:a+b, a, b))
得到结果:
[5, 10, 8]
人工加一下可以发现答案是对的。
对python有了解的小伙伴应该知道len(str) 表示求str的长度。如果想要求数列中每个元素的长度应该怎么写呢?具体代码如下:
list(map(len, ['white', 'blue', 'green', 'yellow']))
得到结果:
[5, 4, 5, 6]
人工校验一下可以发现答案是对的。
对python有了解的小伙伴应该知道str.upper()表示把str中的字母转换成对应的大写。如果想要把数列中每个元素中的英文都转换成对应的大写应该怎么操作?具体代码如下:
list(map(lambda x:x.upper(), ['white', 'blue', 'green', 'yellow']))
得到结果:
['WHITE', 'BLUE', 'GREEN', 'YELLOW']
人工校验一下可以发现答案是对的。
将字符串转换成数值数列的具体代码如下:
list(map(int, '789'))
得到结果:
[7, 8, 9]
人工校验一下可以发现答案是对的。
如果想提取字典中的键你能想到几种方法?本文提供两种方法供大家参考。
方法一:
应用字典自带的函数进行提取,具体代码如下:
dict_1 = {'星期一': '吃榴莲', '星期二': '吃葡萄' , '星期三': '吃西瓜', '星期四': '吃樱桃', '星期五': '吃波罗蜜', '星期六': '吃葡萄', '星期天': '吃猕猴桃'}
list(dict_1.keys())
得到结果:
['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
人工校验一下可以发现答案是对的。
方法二:
应用map函数进行提取,具体代码如下:
list(map(str, {'星期一': '吃榴莲', '星期二': '吃葡萄' , '星期三': '吃西瓜', '星期四': '吃樱桃', '星期五': '吃波罗蜜', '星期六': '吃葡萄', '星期天': '吃猕猴桃'}))
得到结果:
['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期天']
可以发现方法二和方法一得到的结果是一致的。
这就是map方法的运用与定义