day11 map函数

时间:2023-03-09 01:18:20
day11 map函数

场景模拟:实现一个列表内所有元素 *2 的效果
普通的实现方式
单个列表是可以做到很轻松的实现,但是如果我又多个列表都要这个操作,那每个都操作就会重复代码
 ret = []
num_1 = [1,2,10,5,3,7]
for i in num_1:
ret.append(i ** 2)
print(ret)
用函数实现减少重复代码,但是看起来代码的量不少
而且用这种参数代入的方式也会出现限定的感觉,比如现在我运算方法又变了呢
 num_1 = [1,2,10,5,3,7]
num1_1 = [1,2,10,5,3,7]
def map_tes (array):
ret = []
for i in array:
ret.append(i ** 2)
return ret
print(map_tes(num1_1))
print(map_tes(num_1))
单参数只能传要处理的数据,运行的方法是写死的
运算方法函数化,双参数传入数据和规定运算可以大幅升级代码
代价是代码更复杂更长,当然可以使用匿名函数简写代码
 num_1 = [1,2,10,5,3,7]
num1_1 = [1,2,10,5,3,7]
def add_one(x):
return x+1
# lambda x:x+1
def reduce_one(x):
return x-1
# lambda x:x-1
def map_test(func,array):
ret = []
for i in array:
res = func(i)
ret.append(res)
return ret
print(map_test(add_one,num1_1))
print(map_test(lambda x:x+1,num1_1))  # 等效上一条
print(map_test(reduce_one,num_1))
print(map_test(lambda x:x-1,num_1))   # 等效上一条
根据现有的知识能做到的最好的终极版本
 num_1 = [1,2,10,5,3,7]
def map_test(func,array):
ret = []
for i in array:
res = func(i)
ret.append(res)
return ret
map_test(lambda x:x+1,num_1)
 map 函数 按照顺序处理数据,不打乱顺序
    格式 : map(方法,实参)
    极大的压缩了代码量
 num_1  = [1,2,10,5,3,7]2 res = map(lambda x:x+1,num_1)
3 print("内置函数map处理结果",list(res))