1.li=[1,2,3,4,5]
def add(x):
return x+1
def test(func,array):
res=[]
for i in array:
num=func(i)
res.append(num)
return res
print(test(add,li))
print(test(lambda x:x**2,li)) //输出结果为[2, 3, 4, 5, 6]
[1, 4, 9, 16, 25]
res=map(add,li)
for i in res:
print(i) //使用map()内置函数
print(list(map(add,li)))
2.li=['yue_xiao_b','yue_jing_b','yue_lin','problem']
def test(array):
res=[]
for i in array:
if not i.startswith('yue'):
res.append(i)
return res
print(test(li)) //输出结果为['problem']
print(list(filter(lambda n:n.endswith('b'),li))) //输出结果为['yue_xiao_b', 'yue_jing_b'],filter()内置函数
3.from functools import reduce
li=[1,3,5,10]
def test(func,array,init=None):
if init is None:
res=li.pop(0)
else:
res=init
for i in array:
res=func(res,i)
return res
print(test(lambda x,y:x*y,li,10)) //输出结果为1500
print(reduce(lambda x,y:x*y,li,10)) //reduce()内置函数
4.小结:
map()处理得到的结果是一个'列表','列表'中每个元素位置不变,只是在原来的基础上进行了加工
filter()遍历序列中的每个元素,判断其布尔值,如果为True则留下来
reduce()处理序列,并对其进行相应的合并操作