函數方法和模塊

函數方法:

函數使用方法:

​ 匿名函數:一句話函數,用於內置函數,匿名函數結合內置函數使用python

​ func = lambda x,y : x+y 名字func :前形參 :後返回值函數

​ 示例1:code

​ func = lambda x : (x[0],x[2]) 返回多個元素加()對象

​ 示例2:排序

​ func = lambda x,y :x if x > y else yip

​ func = lambda *args : max(args) #返回最大的值,也能夠添加三元運算>utf-8

​ 內置函數:***加key的 min,max,sorted,map,reduce,filter字符串

​ 加key的格式:it

​ 將最小的值返回io

​ dic = {'a':3,'b':2,'c':1}

​ print(min(dic.values(),key=lambda x:x)) key=lambda 函數名 :前形參 :後返回值

callable:

  • 檢查一個對象是否能夠調用

    def haiyang():
        pass
    haiyang()
    
    print(callable(haiyang))

abs:

  • 返回數字的絕對值

    l = -8
    print(abs(l))

sum:

  • 數字相加求和

    print(sum([1,2,3,4,5]))   #sum函數內,存放的是可迭代函數
    print(sum([1,2,3,4,5],10))

min:

  • min求最小值

  • max求最大值

    # 將成績最低的從屬於的那個列表返回。
    # 將成績最低的分數返回。
    dic = {'a':['李業',67],'b':['懟哥', 95],'c':['方垚', 55]}
    
    print(dic[min(dic,key=lambda x:dic[x][1])])   #min取出來的key爲c,經過字典c key鍵找到列表
    
    print(dic[min(dic,key=lambda x:dic[x][1])][1])   #找到列表在經過[1]找到55

reversed:

  • 將一個可迭代對象進行翻轉,返回的是一個迭代器

    l = reversed('胡海洋')
    print(list(l))  #翻轉獲取到的是一個生成器,須要經過list進行打印
    
    l1 = reversed([1,2,3,4,5,6])
    print(list(l1))     #翻轉列表

bytes:

  • 將字符串轉換成bytes類型

    l = "胡海洋"
    
    l1 = l.encode('utf-8')   #encode轉換成bytes字節
    print(l1)
    
    l2 = bytes(l,encoding='utf-8')
    print(l2)

zip拉鍊方法:

  • 將可迭代對象做爲參數,將對象中對應的元素,打包成一個個元祖,若是變量的元素不一直,按最短的取

    l1 = [1,2,3,4]
    l2 = ['a','b','c','d','e']
    
    for i in zip(l1,l2):  #
        print(i)

sorted:

  • 排序函數

    語法:sorted(iterable,key=None,reverse=False)

    iterable 可迭代對象

    key 排序規則,sorted內部會將可迭代對象中每個元素,傳遞給函數形參,進行排序

    reverse True 倒序 Flase正序

    列表排序:

    l = [1,3,4,7,8,2]
    l1 = sorted(l)    #默認正序
    print(l1)
    
    l2= sorted(l,reverse=True)  #爲True倒序
    print(l2)

    字典排序:

    dic  = {1:'a',3:'c',2:'b'}
    dic1 = sorted(dic)   # dic1鍵值排序爲1,2,3
    
    dic2 = {}
    for i in dic1:      #建立新的字典,for循環排序好key,添加到新字典
        dic2[i] = dic[i]
    print(dic2)

    結合函數使用:

    # 按照列表內的字符串長度排序
    l1 = ['天龍八部','西遊記','紅樓夢','三國演義']
    
    print(sorted(l1,key=lambda x:len(x)))
    #根據年齡進行排序
    l1 = [{'id':1,'name':'胡海洋','age':18},
        {'id':2,'name':'俊麗','age':17},
        {'id':3,'name':'寶寶','age':1},]
    
    print(sorted(l1,key=lambda x:x['age']))  #x['age] 先找到年齡key在進行排序

filter:

  • 篩選過濾

    語法:filter(function,iterable)

    iterable 可迭代對象

    function 用來篩選函數,在filter中會自動把迭代對象中的元素傳遞給function,以後根據function返回 True或者Flase來判斷是否保留此項數據

    字典篩選年齡大於十六的

    l1 = [{'id':1,'name':'alex','age':18},
            {'id':1,'name':'wusir','age':17},
            {'id':1,'name':'taibai','age':16},]
    
    l2 = filter(lambda x:x['age'] > 16,l1) 
    print(list(l2))
    #變成迭代器一一進行判斷,lamdba函數,x形參,x['age]返回值判斷,l1可迭代對象

map:

  • 映射函數

    語法:map(function,iterable)

    能夠對可迭代對象中的每個元素進行映射,分別取值執行function

    計算列表中每一個元素的平方,返回新列表

    lst = [1,2,3,4,5]
    # def func(s):
    #     return  s*s
    #
    # mp = map(func,lst)
    # print(mp)
    # print(list(mp))
    
    # 改寫成lamdba
    print(list(map(lambda x:x*x,lst)))

    計算兩個列表中相同位置的數據的和

    lst1 = [1, 2, 3, 4, 5]
    lst2 = [2, 4, 6, 8, 10]
    
    print(list(map(lambda x,y:x+y,lst1,lst2))) #傳入多個值進行計算

reduce:

  • 使用方法:

    reduce(函數名,可迭代對象)

    做用:

    ​ 先把列表中的前兩個元素取出來,計算出結果進行保存,當進行到第二個元素傳參時,將第一次計算完的 結果與10相乘計算,求出一個新的值將最開始臨時保存的值替換掉,依次類推

    from functools import reduce
    
    def func(x,y):
        return x * 10 + y
        # 第一次的時候 x是1 y是2  x乘以10就是10,而後加上y也就是2最終結果是12而後臨時存儲起來了
        # 第二次的時候x是臨時存儲的值12 x乘以10就是 120 而後加上y也就是3最終結果是123臨時存儲起來了
        # 第三次的時候x是臨時存儲的值123 x乘以10就是 1230 而後加上y也就是4最終結果是1234而後返回了
    
    l = reduce(func,[1,2,3,4])
    print(l)
    
    
    #lamdba方法:
    from functools import reduce
    
    l = reduce(lambda x,y:x * 10 + y,[1,2,3,4])
    print(l)
相關文章
相關標籤/搜索