递归函数
在函数内部调用自身
def result_n(n):
if n==1 or n==2:
return 1
else:
result=result_n(n-1)+result_n(n-2)
return result
print(result_n(10))
#55
匿名函数(lambda)
- 格式:
lambda para1,para2,...paran:expression using paras
f= lambda a,b,c:a+b+c
print(f(1,2,3))
#6
高阶函数
高阶函数:把一个函数名,以实参的形式传给某个函数的形参,则称这个函数为高阶函数
def add(a,b,c):
return c(a)+c(b)
def change(a):
return -a
print(add(4,5,change))
#-9
filter 函数
- 筛选函数:过滤掉序列中不符合函数条件的元素。当序列中有需要保留的元素可以用某些函数描述时就可以使用filter()函数
调用格式:
- function 可以是自定义函数,也可以是匿名函数 (返回值要求为bool)
- sequence 列表,元组,字符串
filter(function,sequence)
- 去掉列表中开头为c或者结尾为ty的
li=['city',"univercity",'age',"college"]
f=filter(lambda sr:not sr.endswith("ty") and not sr.startswith("c"),li)
print(list(f))
#['age']
map 映射
功能
- 求一个序列或者多个序列进行函数映射后的值。(用list强转)
格式
- map(function,iterable1,iterable2)
- function的参数可以不止一个
x=[1,2,3,4,5]
y=[2,3,4,5,6]
a=map(lambda x,y:x*y+2 ,x,y)
print(list(a))
#[4, 8, 14, 22, 32]
reduce 函数
-
功能及导入:
-
对一个序列进行压缩,返回一个value(即按照顺序把前两个元素进行函数运算后替换原两个元素形成新序列然后重复直到剩下一个值作为value)
-
python2中,reduce()是内置函数,而现在python3中,它被移植到了functools模块中
-
导入:from function import reduce
-
-
格式:
- reduce(function,iterable,[,initial])
- function必须传两个参数
- iterable为列表或者元组
- 如果不传递initial 则按列表顺序否则将initial放在第一位
from functools import reduce
li=[1,2,3,4,5,6,7,8,9]
result=reduce(lambda x,y:x+y ,li)
print(result)
#45
apply
功能:
- pandas中,应用对象为pandas中的DataFrame或者Series
- 直接对DataFrame或者Series应用函数
- 对pandas中groupby之后的聚合对象应用apply
zip
功能
- 参数为两个可迭代对象,按照序列将对应的元素一一对应打包成元组作为元素生成新的对象
- 长度不一时以长度短的对象为基准
- 注:’\*'操作符,作用与zip()相反,用于分离被zip()压缩的对象
格式
zip(iterable1,iterable2,...)
- iterable为其中参数,为可迭代的对象(字符串,列表,元组,字典(取key忽略value))
li=[5,4,3,2,1]
dic={'a':1,'b':2,'c':3,'d':4,'e':5}
a=zip(li,dic)
for i in a:
print(i,end=" ")
#(5, 'a') (4, 'b') (3, 'c') (2, 'd') (1, 'e')