python十九:map,filter,reduce函数

# 处理序列中的每个元素,得到的结果是一个'列表',该'列表'元素个数及位置与原来一样
def map_practice(func, lt_num):
    lt_new = []
    for i in lt_num:
        lt_new.append(func(i))
    return lt_new


# 通过传递函数,很好的提高代码复用性
v = map_practice(lambda x: x+1, [1, 5, 10, 15, 20])
# 系统函数,map()
v1 = list(map(lambda x: x+1, [1, 5, 10, 15, 20]))
print(v)
print(v1)
# 处理列表中每个元素,判断每个元素得到布尔值,如果是True,则保留
def filter_practice(func, lt_people):
    lt_l = []
    for people in lt_people:
        if func(people) > 0:
            lt_l.append(people)
    return lt_l

v = filter_practice(lambda p:p.count('L'), ["刘备_L", "关羽_L", "张飞_L", "曹操_C","张辽_C"])
print(v)

# 调用系统的filter函数
v = list(filter(lambda p:p.count('L'),["刘备_L", "关羽_L", "张飞_L", "曹操_C","张辽_C"]))
print(v)
# 引用模块中的reduce, 类似c中的库函数,java的系统包
# 处理一个序列,把序列进行合并操作
from functools import reduce

def reduce_practice(func, lt_num):
    res = 1
    for n in lt_num:
        res = func(res, n)
    return res

v = reduce_practice(lambda x,y:x+10, [2, 3, 4, 5])
print(v)

v = reduce(lambda x,y:x+10, [2, 3, 4, 5])
print(v)

猜你喜欢

转载自blog.csdn.net/m0_37564426/article/details/81056456