map函数_js中map函数

map函数_js中map函数python map函数 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新

***将元组转换成list***
>>> map(int, (1,2,3))
[1, 2, 3]
***将字符串转换成list***
>>> map(int, '1234')
[1, 2, 3, 4]
***提取字典的key,并将结果存放在一个list中***
>>> map(int, {1:2,2:3,3:4})
[1, 2, 3]
***字符串转换成元组,并将结果以列表的形式返回***
>>> map(tuple, 'agdf')
[('a',), ('g',), ('d',), ('f',)]
#将小写转成大写
def u_to_l (s):
 return s.upper()
print map(u_to_l,'asdfd')

python map函数

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
map
()函数
map
()是 Python 内置的高阶函数,它接收一个函数 f 和一个
list
,并通过把函数 f 依次作用在
list
的每个元素上,得到一个新的
list
并返回。
例如,对于
list
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
]
如果希望把
list
的每个元素都作平方,就可以用
map
()函数:
因此,我们只需要传入函数f(x)
=
x
*
x,就可以利用
map
()函数完成这个计算:
def
f(x):
 
return
x
*
x
print
map
(f, [
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
])
输出结果:
[
1
,
4
,
9
,
10
,
25
,
36
,
49
,
64
,
81
]
注意:
map
()函数不改变原有的
list
,而是返回一个新的
list
利用
map
()函数,可以把一个
list
转换为另一个
list
,只需要传入转换函数。
由于
list
包含的元素可以是任何类型,因此,
map
() 不仅仅可以处理只包含数值的
list
,事实上它可以处理包含任意类型的
list
,只要传入的函数f可以处理这种数据类型。
任务
假设用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用
map
()函数,把一个
list
(包含若干不规范的英文名字)变成一个包含规范英文名字的
list
输入:[
'adam'
,
'LISA'
,
'barT'
]
输出:[
'Adam'
,
'Lisa'
,
'Bart'
]
def
format_name(s):
 
s1
=
s[
0
:
1
].upper()
+
s[
1
:].lower();
 
return
s1;
print
map
(format_name, [
'adam'
,
'LISA'
,
'barT'
])

map()函数是python内置的高阶函数,对传入的list的每一个元素进行映射,返回一个新的映射之后的list

Python map()函数的用法

Python函数式编程之map()

Python中map()、filter()、reduce()这三个都是应用于序列的内置函数。

格式:

?
1
map
(func, seq1[, seq2,…])

第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合。

Python函数编程中的map()函数是将func作用于seq中的每一个元素,并将所有的调用的结果作为一个list返回。如果func为None,作用同zip()。

1、当seq只有一个时,将函数func作用于这个seq的每个元素上,并得到一个新的seq。

让我们来看一下只有一个seq的时候,map()函数是如何工作的。

work 

从上图可以看出,函数func函数会作用于seq中的每个元素,得到func(seq[n])组成的列表。下面举得例子来帮助我们更好的理解这个工作过程。

?
1
2
3
#使用lambda
>>>
print
map
(
lambda
x: x
%
2
,
range
(
7
))
[
0
,
1
,
0
,
1
,
0
,
1
,
0
]

3

?
1
2
3
#使用列表解析
>>>
print
[x
%
2
for
x
in
range
(
7
)]
[
0
,
1
,
0
,
1
,
0
,
1
,
0
]

4 

一个seq时,可以使用filter()函数代替,那什么情况不能代替呢?

2、当seq多于一个时,map可以并行(注意是并行)地对每个seq执行如下图所示的过程:

2 

从图可以看出,每个seq的同一位置的元素同时传入一个多元的func函数之后,得到一个返回值,并将这个返回值存放在一个列表中。下面我们看一个有多个seq的例子:

?
1
2
>>>
print
map
(
lambda
x , y : x
*
*
y, [
2
,
4
,
6
],[
3
,
2
,
1
])
[
8
,
16
,
6
]

5 

如果上面我们不使用map函数,就只能使用for循环,依次对每个位置的元素调用该函数去执行。还可以使返回值是一个元组。如:

?
1
2
>>>
print
map
(
lambda
x , y : (x
*
*
y, x
+
y), [
2
,
4
,
6
],[
3
,
2
,
1
])
[(
8
,
5
), (
16
,
6
), (
6
,
7
)]

7 

当func函数时None时,这就同zip()函数了,并且zip()开始取代这个了,目的是将多个列表相同位置的元素归并到一个元组。如:

?
1
2
>>>
print
map
(
None
, [
2
,
4
,
6
],[
3
,
2
,
1
])
[(
2
,
3
), (
4
,
2
), (
6
,
1
)]

需要注意的是:

map无法处理seq长度不一致、对应位置操作数类型不一致的情况,这两种情况都会报类型错误。如下图:

8

 

import time
from datetime import datetime

def add(x, y):
print(datetime.now(), “enter add func…”)
time.sleep(2)
print(datetime.now(), “leave add func…”)
return x+y

map(add, [1,2,3], [4,5,6])

 

2016-04-05 15:01:49.382314 enter add func…
2016-04-05 15:01:51.383387 leave add func…
2016-04-05 15:01:51.383471 enter add func…
2016-04-05 15:01:53.385584 leave add func…
2016-04-05 15:01:53.385676 enter add func…
2016-04-05 15:01:55.387388 leave add func…
[5, 7, 9]

今天的文章map函数_js中map函数分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/44878.html

(0)
编程小号编程小号
上一篇 2023-09-07
下一篇 2023-09-07

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注