09.25 python函数系列连载(一)|原来 map()函数如此易学!内置福利哦!

有福利哦,小编整理了多套python学习资源,限时免费分享了!获取方式在文末哈!

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> 123
<class> 456
<class> 789
<class> 123
<class> 456
<class> 789
/<class>/<class>/<class>/<class>/<class>/<class>

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))

程序运行结果:


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
/<ipython-input-29-5e3632bf63ea>

python学习资源获取方式:

  • 点击关注,后台私信小编。回复:python(温馨提示:都是小写字母哦!)
  • 请在评论区评论,点赞+好评


分享到:


相關文章: