filter()函数:过滤作用
语法:filter(function, iterable)
function – 判断函数
iterable – 可迭代对象
input = [2, 18, 9, 22, 17, 24, 8, 12, 27]
# 过滤出所有input中能被3整除的数
print(list(filter(lambda x: x % 3 == 0, input)))
---------
[18, 9, 24, 12, 27]
map()函数:根据给定函数,对指定序列做映射
语法:map(function, iterable, …)
function – 函数
iterable – 一个或多个序列
def X2(x):
return x**2
input = [1,2,3,4,5]
print(list(map(X2, input)))
---------
[1, 4, 9, 16, 25]
reduce()函数: 对序列中元素进行累积操作
语法:reduce(function, iterable[, initializer])
function – 函数(有两个参数)
iterable – 可迭代对象
initializer – 初始值
reduce()中的函数先对序列中的第一个和第二个元素操作,得到的结果再与第三个元素操作,如果提供有initializer,那么函数先对initializer和序列中的第一个元素操作,得到的结果再与第二个元素操作。
reduce()是Python 2.x的内置函数,Python 3.x中reduce()已经被移到functools模块里,如果我们要使用,需要引入functools模块来调用reduce()函数。
from functools import reduce
# 计算4的阶乘
list = [i for i in range(1, 5)]
print('4的阶乘为:', (reduce(lambda x, y: x * y, list)))
---------
4的阶乘为: 24
from functools import reduce
# 初始值为10,再计算列表和1+2+3+4+5
list = [i for i in range(1, 6)]
print('和为:', (reduce(lambda x, y: x + y, list, 10)))
---------
和为: 25
zip()函数: 将各个迭代器中对应的元素打包成一个个元组
语法:zip([iterable, …])
iterable – 一个或多个序列
zip()函数将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。
zip()与filter()、map()一样,返回的都是一个对象,我们可以使用list()将其转换成列表输出。
如果各个迭代器的元素个数不一致,则返回的元素个数与最短的迭代器一致;利用 ***** 号操作符,可以将元组解压。
a = [1, 2, 3]
b = [4, 5, 6]
c = [2, 4, 6, 8, 10]
z1 = list(zip(a, b))
z2 = list(zip(a, c)) # 元素个数与最短的列表一致
z3 = list(zip(a, b, c))
z4 = list(zip(*z1)) # 解压z1
print(z1)
print(z2)
print(z3)
print(z4)
---------
[(1, 4), (2, 5), (3, 6)]
[(1, 2), (2, 4), (3, 6)]
[(1, 4, 2), (2, 5, 4), (3, 6, 6)]
[(1, 2, 3), (4, 5, 6)]