python基础~15(三种内置函数)

# 高阶函数

# 1.函数的传入参数是一个函数名

# 2.函数的返回值是一个函数名

# map()函数

# reduce()函数

# filter()函数

# 编程的方法论:

# 面向过程:找到解决问题的入口,按照一个固定的流程去模拟解决问题的流程

# 函数式:函数式编程,要么参数是函数,要么返回值是函数,没有for和while循环,所有循环都是用递归去实现

# 面向对象:

# def bar(name):
#     print(name)
#     return name
# def fun(na):
#     print(na)
# fun(bar('you'))

map()函数

# num=[1,2,3,4,5]
# re=[]
# for i in num:
#     re.append(i**2)
# print(re)
#
# def m(arr):
#     re = []
#     for i in arr:
#         re.append(i ** 2)
#     return re
# re=m(num)
# print(re)
#
# def add(i):
#     return i+1
# def reduce(i):
#     return i-1
# def m(fun,arr):
#     re = []
#     for i in arr:
#         i=fun(i)
#         re.append(i)
#     return re

re=m(add,num)#函数作为形参,只用传其函数名,函数名代表函数地址

# re=m(add,num)
# print(re)
# print(m(reduce,num))
#
# print(m(lambda x:x-1,num))
#
#
# res=map(lambda x:x-1,num)
# # for i in res:
# #     print(i)
# print(list(res))
# print(list(map(lambda x:x-1,num)))
# res=map(add,num)
# print(list(res))
#
# s='you and oh'
# print(list(map(lambda x:x.upper(),s)))

filter()函数

# person=['1a','b','1c','d','1f','i']
# def p(person):
#     re = []
#     for i in person:
#         if not i.startswith('1'):
#             re.append(i)
#     return re
# print(p(person))

# person=['1a','b','1c','d','1f','i']
# def st(per):
#     return per.startswith('1')
# def fil(fun,person):
#     re = []
#     for i in person:
#         if not fun(i):
#             re.append(i)
#     return re
# print(fil(st,person))
#
# re=fil(lambda x:x.startswith('1'),person)
# print(re)
#
# re=filter(lambda x:x.startswith('1'),person)
# print(re)
# print(list(re))
#
# re=filter(lambda x:not x.startswith('1'),person)
# print(re)
# print(list(re))

reduce函数

# num=[1,2,3,]
# re=0
# for i in num:
#     re+=i
# print(re)

num=[1,2,3,]
# def ad(num):
#     re = 0
#     for i in num:
#         re += i
#     return re
# re=ad(num)
#
# def red(fun,num):
#     re=1
#     for i in num:
#         re = fun(re,i)
#     print(re)
# red(lambda x,y:x*y,num)

# def red(fun,num):
#     re=num.pop(0)
#     for i in num:
#         re = fun(re,i)
#     print(re)
# red(lambda x,y:x*y,num)

strat=None是默认参数,你可以传也可以不传

def red(fun,num,strat=None):
    re=num.pop(0)
    for i in num:
        re = strat*fun(re,i)
    print(re)
red(lambda x,y:x*y,num,10)

from functools import reduce
num=[1,2,3,4,5]
print(reduce(lambda x,y:x*y,num,10))

总结

map:依次对可迭代对象进行修改似的操作

filter:依次对可迭代对象进行筛选

reduce:将可迭代对象进行压缩似的操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值