您的位置:首页 > 编程语言 > Python开发

Python学习日志——函数补充

2019-07-25 21:25 176 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_38525063/article/details/97303377

高阶函数

把一个函数名,以实参的形式,传递给这个函数的形参,这个函数就称为高阶函数。

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')]

    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: