不乱于心,不困于情。
不畏将来,不念过往。如此,安好。

python的map()函数

map()接收一个函数f和一个序列list作为参数,并通过f依次作用在list的每一个元素上并返回一个新的list2{注意:是不改变原来的序列,而生成新的序列},
即将序列list的每一个元素作为函数f的传参,list2=map(f,list)
由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。



举例1:
list1=[1,2,3,4,5,6]需要将list的每个元素乘方返回新的序列

def f(x):
    return x*x
list2=map(f,list1)
print(list2)
结果:
<map object at 0x000002A4F1DB66D8>
因为在python3中,map()返回的是一个iterator迭代器,不是序列

print(list(list2))
结果:
[1, 4, 9, 16, 25, 36]
所以如果要在python3中实现返回序列的效果,可以加list(map(f,list))强转成序列


举例2:
按照首字母大写,后续字母小写的规则,规范英文名字的list
names1=['adam', 'LISA', 'barT']

def format_name(s):
    s2=s[0:1].upper()+s[1:].lower()
    return s2

names2=map(format_name,names1)
print(list(names2))
结果:
['Adam', 'Lisa', 'Bart']


举例3:
当seq序列多于一个时,map可以并行(注意是并行)

l2=map(lambda x,y:x**y,[1,2,3],[1,2,3])
for i in l2:
    print(i)
结果:第一个序列的每个元素作为x的值,第二个序列的每个元素作为y的值,求幂
1
4
27


l3 = map(lambda x, y: (x ** y, x + y), [1, 2, 3], [1, 2, 3])
for i in l3:
    print(i)
    
结果:
(1, 2)
(4, 4)
(27, 6)
    
    
举例4:
类型转换
l=map(int,'1234')
for i in l:
    print(type(i))
    print(i)
结果:
<class 'int'>
1
<class 'int'>
2
<class 'int'>
3
<class 'int'>
4
赞(0) 打赏
未经允许不得转载:seo优化_前端开发_渗透技术 » python的map()函数

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏