1. map
(1)map(function, iterable,……) ,第一个参数是一个函数,第二个参数是一个可迭代的对象,第一个参数function以参数序列中的每一个元素调用function函数,返回包含每次function函数返回值的一个迭代器。
def run(x):
return x**2
f = map(run, [1, 2, 3, 4, 5])
print(f)
for i in f:
print(i)
运行结果如下:
<map object at 0x000001D645B71860>
1
4
9
16
25
在Python2中返回的是一个列表,但在Python3中返回的是一个迭代器。上述程序是在Python3中执行的。
其实上述程序还可以这样写
f = map(lambda x: x**2, range(1, 6))
print(f)
for i in f:
print(i)
或者
f = map(lambda x: x**2, [1, 2, 3, 4, 5])
print(f)
for i in f:
print(i)
(2)map中有多个可迭代对象
f = map(lambda x, y: x+y, [1, 2, 3, 4, 5], [1, 2, 3, 4, 5])
print(f)
for i in f:
print(i)
返回结果
<map object at 0x0000020260C41FD0>
2
4
6
8
10
2. filter
filter(function, iterable) filter函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
def run(num):
return num % 2 == 1
p = filter(run, [1, 2, 3, 4, 5, 6])
print(p)
for i in p:
print(i)
运行结果是
<filter object at 0x000001C5D54B19E8>
1
3
5
下面是用lambda函数写的
f = filter(lambda x: x % 2 == 1, [1, 2, 3, 4, 5, 6])
print(f)
for i in f:
print(i)
当把lambda表达式的返回结果改为零时
f = filter(lambda x: x % 2 ==0, [1, 2, 3, 4, 5, 6])
print(f)
for i in f:
print(i)
运行结果如下
<filter object at 0x00000269903A18D0>
2
4
6
3. reduce
在Python3中没有reduce内置函数,但在functools中有reduce类,reduce调用的格式:reduce(function, iterable),reduce的作用是将传给function(有两个参数 )对集合中的第1、2个元素进行操作,得到的结果再与第三个元素用function函数进行运算……
下面看一个程序
from functools import reduce
f = reduce(lambda x, y: x*y, [1, 2, 3, 4, 5])
print(f)
运行结果如下
120