# 处理序列中的每个元素,得到的结果是一个'列表',该'列表'元素个数及位置与原来一样
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)