python内置函数map()的应用详解(个人笔记)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/yu_1628060739/article/details/102695207

python内置函数map()的应用详解

简介:
map()函数是 Python 内置的高阶函数,它接收一个函数 f 和一个list(或多个 list,但list个数与f函数的参数个数必须相等),并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。

注意:在python3.x版本里面,map()的返回值是iterators,而不是list, 所以想要使用,需将iterator 转换成list ,而在python2.x版本里,map()是直接返回list。

下面介绍几种map函数的用法:
1.map()函数可以做类型转换:

a = input("输入的字符串为").split()  #input()默认输入的是字符串
l=map(int,a) #将数值型字符串转换成整数型
for i in l:
    print(type(i),i)
for i in a:
    print(type(i),i)

结果:

输入的字符串为11 12 13
<class 'int'> 11
<class 'int'> 12
<class 'int'> 13
<class 'str'> 11
<class 'str'> 12
<class 'str'> 13

2.map()函数可以格式化输入一行整数:

a = list(map(int,input().split()))#input()默认输入的是字符串
print(a)

结果:

12
[12]

3.map()函数可以把一个list,转换为另一个新的list,它并不改变原来的list:

a = [1,2,3,4,5,6]
b = [7,8,9,10,11,12]
def f1(n):
    return n**2
print(list(map(f1,a)))

def f2(n,m):
    return n+m
print(list(map(f2,a,b)))
print(a,b)

结果:

[1, 4, 9, 16, 25, 36]
[8, 10, 12, 14, 16, 18]
[1, 2, 3, 4, 5, 6] [7, 8, 9, 10, 11, 12]

注意:因为我使用的python3x,所以需要用list()函数将map返回的迭代器转换为列表

4.list可以包含任意的类型,因此map()函数可以处理任意类型的list,前提条件是f函数包含这种类型:

def f1(s):
    return len(s),s.count("i")#统计列表里每一个元素的长度,某个单词出现的个数。
 
def f2(s):
    s=s[0:1].upper()+s[1:].lower() #让列表里的每一个元素,首字母大写,其余字母小写。
    return s
    
s = ["i","like", "python"]
print(list(map(f1,s)))
print(list(map(f2,s)))

结果:

[(1, 1), (4, 1), (6, 0)]
['I', 'Like', 'Python']

注意:第二个函数的处理字符串的方法值得注意

5.map()函数可以并行的处理每一个list (list中的元素种类必须一致):

# a,b元素个数一样。
a = [1,2,3,4,5]
b = [2,4,6,8,10]
l =list(map(lambda x,y:x+y,a,b))
print(l)

结果:

[3, 6, 9, 12, 15]

如果类型不一样话,会报错

# 类型不一样,会报错。
a = [1,2,3,4"a"]
b = [2,4,6,8,10]
l =list(map(lambda x,y:x+y,a,b))
print(l)

结果:

File "<ipython-input-29-5e3632bf63ea>", line 1
    a = [1,2,3,4"a"]
                ^
SyntaxError: invalid character in identifier
 

猜你喜欢

转载自blog.csdn.net/yu_1628060739/article/details/102695207
今日推荐