四、对可迭代对象的操作

3、 对可迭代对象的操作

3.1 filter

在python 2 的时候是内置函数,python3修改成了一个内置类

  1. 语法:

    filter(__function,__object)

__function:函数

__object:可迭代对象

filter根据输入的函数来过滤可迭代对象,得到的是一个filter类型的对象。

filter对象也是一个可迭代对象

filter 对可迭代对象进行过滤,得到的是一个filter对象

ages = [12,23,30,17,16,22,19]
x = filter(lambda a: a > 18,ages)
print(type(x))	#<class 'filter'>
for a in x:
    print(a,end = ' ')	#23 30 22 19 

3.2 map

  1. 语法:

    map(__function,__object)

__function:函数

__object:可迭代对象

map根据输入的函数来对可迭代对象进行相应的操作,然后得到一个map类型的对象,该对象也是一个可迭代对象

map根据输入的函数参数来对输入的可迭代对象参数进行操作

ages = [12,23,30,17,16,22,19]
x = map(lambda a: a - 2,ages)
print(type(x))	#<class 'map'>
print(list(x))	#[10, 21, 28, 15, 14, 20, 17]

3.3 reduce

reduce以前是一个内置函数,现在在一个模块中

内置函数和内置类都在 builtin.py 文件中

  1. 导入reduce模块的语法:

    from functools import reduce

  2. reduce 语法:

    reduce(__function,__object,初始值)

__function:函数

__object:可迭代对象

初始值 : int

根据指定的函数对可迭代对象进行相加或相减操作,如果没有指定初始值,则默认没有初始值。

from functools import reduce
ages = [12,23,30,17,16,22,19]
x = reduce(lambda a,b: a - b,ages)	
#将列表中的数据进行减法,从第一个开始减到最后一个
print(type(x))	#<class 'int'>
print(list(x))	#-115

x = reduce(lambda a,b: a + b,ages)
#将列表中的数据进行加法,从第一个开始加到最后一个
print(x)	#139

#对列表嵌套字典进行操作,利用到初始值
from functools import reduce
a = [
    {'name':'zhangsan','age':18,'height':180},
    {'name':'zhangsan1','age':19,'height':175},
    {'name':'zhangsan2','age':21,'height':177},
    {'name':'zhangsan3','age':22,'height':171},
    {'name':'zhangsan4','age':15,'height':165}
]
def zzw(a,b):
    return a + b['age']
print(reduce(zzw,a,0))	#95
'''
1. 起初 zzw(a,b) 函数中 a = 0 , b = a[0]
2. 然后进行 a + b['age'] ==> 0 + a[0]['age'] ==> 0 + 18 得出 18
3. 然后将 18 赋值给a,此刻b为a[1],继续带入 a + b['age'] 直到可迭代对象结束

简化写法:
print(reduce(lambda x,y: x + y['age'],a,0))
'''

 

posted @ 2021-06-02 09:47  zzwYYYYYY  阅读(74)  评论(0)    收藏  举报