python中的map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
示例一:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
有一个
list
, L
=
[
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
],我们要将f(x)
=
x^
2
作用于这个
list
上,那么我们可以使用
map
函数处理。
>>> L
=
[
1
,
2
,
3
,
4
,]
>>>
def
pow2(x):
...
return
x
*
x
>>>
map
(pow2,L)
[
1
,
4
,
9
,
16
]
如果给出了额外的可迭代参数,则对每个可迭代参数中的元素同时的应用‘function’。
>>>
def
mknum(a,b,c):
...
return
a
*
10000
+
b
*
100
+
c
...
>>> l1
=
[
10
,
20
,
30
]
>>> l2
=
[
40
,
50
,
60
]
>>> l3
=
[
70
,
80
,
90
]
>>>
map
(mknum,l1,l2,l3)
[
104070
,
205080
,
306090
]
结果表明,
map
函数对每个
list
取相同的下标做了mknum函数处理。
示例二:利用map()函数,把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam’, ‘LISA’, ‘barT’],输出:[‘Adam’, ‘Lisa’,‘Bart’]。
#!/usr/bin/env python
def chname(name):
n = 0
for a in name:
if n==0:
cname = a.upper()
else:
cname = cname + a.lower()
n = n+1
return cname
print map(chname,['bob','jeAN','jessica'])
示例三:
1
2
3
4
5
6
7
8
9
>>>
def
abc(a, b, c):
...
return
a
*
10000
+
b
*
100
+
c
...
>>> list1
=
[
11
,
22
,
33
]
>>> list2
=
[
44
,
55
,
66
]
>>> list3
=
[
77
,
88
,
99
]
>>>
map
(abc,list1,list2,list3)
[
114477
,
225588
,
336699
]
看到并行的效果了吧!在每个
list
中,取出了下标相同的元素,执行了abc()。
示例四:
1
2
3
4
5
6
7
8
>>> list1
=
[
11
,
22
,
33
]
>>>
map
(
None
,list1)
[
11
,
22
,
33
]
>>> list1
=
[
11
,
22
,
33
]
>>> list2
=
[
44
,
55
,
66
]
>>> list3
=
[
77
,
88
,
99
]
>>>
map
(
None
,list1,list2,list3)
[(
11
,
44
,
77
), (
22
,
55
,
88
), (
33
,
66
,
99
)]
示例五:
1
2
3
4
5
6
7
8
9
>>>
def
add100(x):
...
return
x
+
100
...
>>> list1
=
[
11
,
22
,
33
]
>>>
map
(add100,list1)
[
101
,
102
,
103
]
>>> [add100(i)
for
i
in
list1]
[
101
,
102
,
103
]
示例六:
1
2
3
4
5
6
7
8
>>>
def
abc(a, b, c):
...
return
a
*
10000
+
b
*
100
+
c
...
>>> list1
=
[
11
,
22
,
33
]
>>> list2
=
[
44
,
55
,
66
]
>>> list3
=
[
77
,
88
,
99
]
>>>
map
(abc,list1,list2,list3)
[
114477
,
225588
,
336699
]
map()函数返回map类型,可用list(map)转化为list类型。