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
python的map()函数
未经允许不得转载:seo优化_前端开发_渗透技术 » python的map()函数
相关推荐
- 暂无文章