一、filter 过滤
filter 过滤, 从可迭代对象中,筛选出满足条件的元素,再将这些满足条件的元素,组成一个新的可迭代对象。
方式一:filter(过滤方法,可迭代对象)
举例:将一个list中的偶数,全部筛选出来
def filter_int(x:int):if x % 2 == 0:return Truereturn Falselist = [1,2,3,4,5,6]if __name__ == '__main__':new_filter = filter(filter_int,list) # 得到的是一个filter对象,filter对象是可迭代对象for i in new_filter:print(i)# list1 = list(new_filter)# print(list1) # 将可迭代对象,转成list
new_filter = filter(filter_int,list) # 得到的是一个filter对象,filter对象是可迭代对象
方式二:filter 使用lambda 表达式
filter(lambda 变量名称: 筛选条件,可迭代对象)
list = [1,2,3,4,5,6]if __name__ == '__main__':new_filter = filter(lambda x: x%2==0,list)for i in new_filter:print(i)
new_filter = filter(lambda x: x%2==0,list) # 得到的是一个filter对象,filter对象是可迭代对象
二、map 映射
2.1 处理一个可迭代对象
map(lambda 变量:处理逻辑,可迭代对象)
map依次,对可迭代对象里的元素做处理。
map_object=map(lambda x:x*2+2,[1,2,3,4])
for i in map_object:print(i)
打印结果:
4
6
8
10
map 对list[1,2,3,4] 里的每一个元素,做计算,然后得到一个可迭代对象。map 对象
2.2 处理多个可迭代对象
依次将可迭代对象A第一个元素,与可迭代对象B 第一个元素做处理
可迭代对象A第二个元素,与可迭代对象B 第二个元素做处理
。。。。
最后得到一个新的可迭代对象 map对象
map(lambda x,y: x+y,[1,2,3],[10,20,30])
map_object= map(lambda x,y:x+y,[1,2,3],[10,20,30])
for i in map_object:print(i)
打印结果:
11
22
33
三、reduce
使用reduce ,需要先引入包
from functools import reduce
reduce() 函数语法:
reduce(function, iterable[, initializer])
参数
- function -- 函数,有两个参数
- iterable -- 可迭代对象
- initializer -- 可选,初始参数
作用:
1、 将可迭代对象中的,第一个元素,与第二个元素传入函数做处理,得到的结果作为变量,与第三个元素传入函数再做处理,依次处理
举个例子
累加的例子,list=[1,2,3,4,5]
先处理1+2,得到的结果再与3做相加
from functools import reducelist = [1, 2, 3, 4, 5]def xiangjia(x, y):return x + yif __name__ == '__main__':reduce_object = reduce(xiangjia, list)print(reduce_object)
zip([iterable, ...])
打印结果:
15
四、zip
zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
zip 语法:
zip([iterable, ...])
参数说明:
- iterable -- 一个或多个迭代器;
举例
"abcdef",[1,2,3,4,5],[22,33,44,55] -------->[('a',1,22),('b',2,33),('c','3','44')]
str1 = "abcdef"
list1 = [1,2,3,4,5]
list2 = [22,33,44,55]if __name__ == '__main__':print(zip(str1,list1,list2))
<zip object at 0x7fc5201d8e10>
zip函数,处理,得到一个可迭代对象,zip对象。
使用list ,将zip对象转为list
print(list(zip(str1,list1,list2)))
输出结果:
[('a', 1, 22), ('b', 2, 33), ('c', 3, 44), ('d', 4, 55)]