[转载] python| map()函数应用详解

参考链接: Python map函数

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

简而言之,map()函数可以把一个list,转换为另一个新的list,它并不改变原来的list。 

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

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) 

程序运行结果: 

输入的字符串为123 456 789

<class 'int'> 123

<class 'int'> 456

<class 'int'> 789

<class 'str'> 123

<class 'str'> 456

<class 'str'> 789  

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

a = list(map(int,input().split())) 

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

a = [1,2,3,4,5,6]

b = [2,4,6,8,10,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]

[3, 6, 9, 12, 15, 18]

[1, 2, 3, 4, 5, 6] [2, 4, 6, 8, 10, 12]

 

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

print(map(f1,a))

#在python3.x版本里面,map()的返回值是iterators,而不是list,

#所以想要使用,需将iterator 转换成list ,而在python2.x版本里,map()是直接返回list 

程序运行结果: 

<map object at 0x0000014AA9510F60> 

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'] 

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

# a,b元素个数一样。 

# 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值