map函数
map(func, *iterables) --> map object
- 参数function 传的是一个函数名,可以是python内置的,也可以是自定义的。
- 参数iterable 传的是一个可以迭代的对象,例如列表,元组,字符串这样的。
处理序列中的的每个元素,得到的结果是一个‘列表+’,该列表的元素个数及位置与原来的一样;
a
=
(
1
,
2
,
3
,
4
,
5
)
b
=
[
1
,
2
,
3
,
4
,
5
]
la
=
map
(
lambda
x
:
x
+
1
,
a
)
lb
=
map
(
lambda
x
:
x
**
2
,
b
)
print
(
list
(
la
)
)
print
(
list
(
lb
)
)
输出:
[2, 3, 4, 5, 6]
[1, 4, 9, 16, 25]
filter函数
filter(function or None, iterable) --> filter object
对sequence中的item依次执行function(item),将执行结果为True的item组成一个list/String/Tuple(取决于sequence的类型)返回;
people
=
[
{
'name'
:
'alex'
,
'age'
:
24
}
,
{
'name'
:
'hu'
,
'age'
:
23
}
,
{
'name'
:
'gu'
,
'age'
:
18
}
]
print
(
list
(
filter
(
lambda
p
:
p
[
'age'
]
<=
20
,
people
)
)
)
# 输出:[{'name': 'gu', 'age': 18}]
reduce函数
reduce(function, sequence[, initial]) -> value
- function – 函数,要有两个参数
- iterable – 可迭代对象
- initializer – 可选,初始参数
需要导入模块
from functools import reduce
>>
>
def
add
(
x
,
y
)
:
# 两数相加
.
.
.
return
x
+
y
.
.
.
>>
>
reduce
(
add
,
[
1
,
2
,
3
,
4
,
5
]
)
# 计算列表和:1+2+3+4+5
15
>>
>
reduce
(
lambda
x
,
y
:
x
+
y
,
[
1
,
2
,
3
,
4
,
5
]
)
# 使用 lambda 匿名函数
15
== reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates ((((1+2)+3)+4)+5). ==