Python map()函数

Python map() 函数

map()是一个 Python 内建函数,它允许你不需要使用循环就可以编写简洁的代码。其基本核心是允许你使用一个函数转换整个可迭代对象的函数。在此之前我们需要简单了解函数和可迭代对象具体指什么。
1.函数: 实现特定功能的代码段,能够增强应用的模块性并且提高代码的重复利用率。
如:print()input()type()等。
2.迭代对象: 迭代(遍历)就是按照某种顺序逐个访问对象中的每一项。Python中有很多对象都是可以通过for语句来直接遍历的,例如liststringdict等,这些对象都是可迭代的,被称为可迭代对象。
我们可以将可迭代对象想象成一个容器,里面存放了有限个元素,并且每个元素都可以从中获取出来。那么这个容器就是可迭代的,这个容器就是可迭代对象。

map()函数的基本形式:

map(function, iterable, ...)
参数:
function - 针对每一个迭代调用的函数。
iterable - 支持迭代的一个或者多个对象。在 Python 中大部分内建对象,例如 lists, dictionaries, 和 tuples 都是可迭代的。

在 Python 3 中,map()返回一个与传入可迭代对象大小一样的 map 对象。在 Python 2中,这个函数返回一个列表 list。
首先,我们先来看看用for循环来实现map函数的基本功能,假如我们有一个字符串列表,我们想要将每一个元素都转换整型类型。

list_of_strings = ["1","2","3","4","5"]
使用传统的for循环:
list_of_strings = ["1", "2", "3", "4", "5"]
list_int = []

for string in list_of_strings:
    list_int.append(int(string))
print(list_int)

运行结果:

[1, 2, 3, 4, 5]

其基本思想先将字符型的列表通过for循环遍历出来,然后将遍历出来的字符转化为整型,再通过append()函数追加到一个空列表中。

1. 使用 map() 函数,代码将会非常简单,非常灵活。
list_of_strings = ["1", "2", "3", "4", "5"]
list_int=map(int,list_of_strings)  #创建一个变量来存储我们想要转换为数字的字符串列表

print(list_int)  #map函数返回的是map object对象

#使用list进行了转换
print(list(list_int)) #接收我们新转换的可迭代项,并告诉计算机这些项是列表的一部分

运行结果:

<map object at 0x000001EE5E6BA700>
[1, 2, 3, 4, 5]

示例:
(1)将字符串列表中每一个元素都转换成大写字母。

def to_upper_case(s):
    return s.upper()      #函数化
 
result = ["python", "c", "java", "php"]
directions_upper = map(to_upper_case, result)

print(list(directions_upper))  #使用list()函数,来将返回的 map 转换成 list 列表

运行结果:

['PYTHON', 'C', 'JAVA', 'PHP']

(2)如果函数很简单,可以使用 lambda 函数:

result = ["python", "c", "java", "php"]
directions_upper = map(lambda s: s.upper(), result)

print(list(directions_upper))

运行结果:

['PYTHON', 'C', 'JAVA', 'PHP']

lambda 函数是一个匿名函数,与def 函数名 ()的功能相同,例如创建一个列表,从1到10。

alist = map(lambda n: n*n , range(1, 11))

print(list(alist))

运行结果:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
2. 对多个迭代对象使用map()函数

对列表上的元素对应求和:

def sum_num(x, y):
    return x + y
 
a = [1, 4, 6]
b = [2, 3, 5]
 
result = map(sum_num, a, b)
 
print(list(result))

运行结果:

[3, 7, 11]

使用 lambda 函数

a = [1, 4, 6]
b = [2, 3, 5]
 
result = map(lambda x, y: x+y, a, b)
 
print(list(result))

运行结果:

[3, 7, 11]

当可迭代对象的长度不相同时:

a = [1, 4, 6, 7, 8]
b = [2, 3, 5]
 
result = map(lambda x, y: x+y, a, b)
 
print(list(result))

运行结果:

[3, 7, 11]

超过的元素 (7 , 8 )被忽略了。
map() 函数不是使用for循环遍历字符串列表的每个项,而是将整个字符串列表转换为数字列表。所以节省了内存,并且代码运行得更快。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值