递归
在一个函数内调用本身
def new(num):
if num==1 or num==2:
return 1
else:
return new(num-1)+new(num-2)
print(new(10))
匿名函数
格式
#lambda para1,para2,....,paraN:expression using paras
f = lambda a,b,c:a+b+c
print(f(1,2,3))
高阶函数
把一个函数名,以实参的形式,传递给这个函数的形参,这个函数就称为高阶函数。
def add(a,b,c):
return c(a)+c(b)
a_va=add(-9,1,abs)
print(a_va)
举例:
li1=['zhjiang','college','university']
def start_s(s,c):
return s.startswith(c)
def end_s(s,c):
return s.endswith(c)
def one(lis,st,a):
li=[]
for i in lis:
if not a(i,st):
li.append(i)
return li
print(one(li1,'c',start_s))
print(one(li1,'ty',end_s))
filter函数
功能:
-
过滤序列中不符合函数条件的元素。当序列中需要保留的元素可以用某些函数时。就应该想到filter函数。
-
调用格式
filter(function,sequence)
- function —>可以是自定义的函数,也可以匿名函数
- sequence —>列表,元组,字符串
li1=['zhjiang','college','university']
f=filter(lambda sr:not sr.endswith('ty'),li1)
print(list(f))
map函数 映射
功能:
- 求一个序列或者多个序列进行函数映射后的值。(用list()强转)
格式:
- ‘map(function,iterable1,iterable2)’
- function 参数可不止一个
- iterable1,iterable2就是传入function的参数
li=[1,2,3,4,5]
res=map(lambda x:x+1,li)
print(list(res))
#[2, 3, 4, 5, 6]
x=[1,2,3,4]
y=[5,4,3,2]
def f(x,y):
return x+y
r=map(f,x,y)
print(list(r))
#[6, 6, 6, 6]
reduce函数
- 功能
- 对序列压缩运算,得到一个value
- python2里,reduce为内置函数,而现在,py3中,他被移到fuctools模块中
- from funtools import reduce
- 格式
reduce(function,iterable,[inital])
function必须要传两个参数
iterable--->列表元组
- 例
from functools import reduce
li=[1,2,3,4,5,6]
t=reduce(lambda x,y:x+y,li)
print(t)
#1--->f(1,2)--->[3,3,4,5,6]
#2--->f(3,3)--->[6,4,5,6]
#3--->f(6,4)--->[10,5,6]
#....
#21
li=[1,2,3,4,5,6]
t=reduce(lambda x,y:10*x+y,li,100)
print(t)
#100123456
apply
功能
- pandas中,应用对象是pandas中的DataFrame或者Series
- 直接对DataFrame或者Series应用函数
- 对pandas中gropby之后的聚合对象应用apply
import numpy as np
import pandas as pd
a=np.random.randint(low=0,high=4,size=(2,4))
print(a)
data=pd.DataFrame(a)
print(data)
tim=data.apply(lambda x:x*10)
print(tim)
'''
[[3 3 1 1]
[1 1 1 0]]
0 1 2 3
0 3 3 1 1
1 1 1 1 0
0 1 2 3
0 30 30 10 10
1 10 10 10 0
zip
功能
- 将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,返回由这些元组构成的对象
- 长度不一样的时候,以长度短的为准
注:
- 利用\*号操作符,与zip相反,进行解压
格式
zip(iterable1,it2,it3…)
- iterable—>两个或者多个可迭代序列(字符串,列表,元组,字典)
- py2
- py3
a=[1,2,3]
b=[4,5,6,7]
zipt=zip(b,a)
print(list(zipt))
#[(4, 1), (5, 2), (6, 3)]
start_zipt=zip(*zipt)
print(list(start_zipt))
#[(4, 5, 6), (1, 2, 3)]
a={'name':'sheep'}
b=[4,5,6,7]
c={'id':666}
zip_1=zip(a,b,c)
print(list(zip_1))
#[('name', 4, 'id')]