日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

内置函数与lambda匿名函数

發布時間:2025/3/17 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内置函数与lambda匿名函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內置函數

  • all(iteralble) 如果可迭代對象內的所有元素的bool值為真,那么返回真,如果這個可迭代對象是空,也返回真。
  • all([1,2,3,4]) # return True all([]) # return True all([None, 1, 'a']) # return False
  • any(iterable) 和 all(iteralble) 類似,只是只要有一個元素為真,那么就是真
  • bytes(obj) 將一個對象轉為字節
  • bytes('abc',encoding='utf-8') # b'abc' bb = bytes([1,2,3,4]) # b'\x01\x02\x03\x04'
  • callable(obj) 對象是否可調用,返回True/False 注意,所有的類都是可調用的,因為類的實例都有一個__call__() 方法
  • chr(i) 數字轉字符;ord(c) 字符轉編碼
  • dir(obj) 查看對象的所有屬性/方法
  • help(obj) 查看幫助文檔
  • divmod(x, y) return the tuple (x//y, x%y) 商和余。例如,計算網頁需要分多少頁顯示:
  • def count(x, y):res = divmod(x, y)if res[1] > 0:return res[0]+1return res[0] # 假設有200條評論,每頁顯示50,需要多少頁 print(count(200, 50)) # 結果 5
  • enumerate(iterable obj) 迭代取值,返回元組(索引,元素)組成的新的可迭代對象(可以用for i in 或 list 來取值)。如果對象類型是dict,元組形式就是(索引,key)
  • list(enumerate(['a','b','c'])) # [(0, 'a'), (1, 'b'), (2, 'c')] list(enumerate({'name': 'Seb', 'age': 22, 'sex': 'male'})) # [(0, 'name'), (1, 'age'), (2, 'sex')]
  • frozenset() 創建一個不可變的集合
  • isinstance(obj, class) 判斷對象的類型,返回True/False
  • pow(x, y, z) 對x進行y的冪運算然后除z取余:x**y%z
  • reversed() 反轉,返回一個可迭代對象list(reversed('abc')) # ['c', 'b', 'a']
  • round(float, 保留的小數位) round(9.2356, 3) # 9.236
  • slice(x, y, z) 創建一個切片對象
  • x = slice(0,5,2) # 創建一個切片對象x l = [1,2,3,4,5,6] print(l[x]) # [1, 3, 5]
  • sorted(iterable, reverse=False) 排序返回一個列表
  • print(sorted('baefc')) # ['a', 'b', 'c', 'e', 'f'] print(sorted('baefc', reverse=True)) # ['f', 'e', 'c', 'b', 'a']
  • zip(序列1, 序列2) 拉鏈函數,返回一個zip obj(迭代器,可通過list或for i in 取值),左邊序列的的元素對應右邊序列的唯一元素,結合為元組。
  • s = 'abcde' l = [1,2,3,4,5,6,] print(list(zip(s, l))) # [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]

    匿名函數lambda

    基本形式:

    lambda: args : expression ,表達式的結果就是函數的return value

    func = lambda x:x*2 func(2) # 也可以這樣來調用 lambda x : x < 3 # 返回True/False

    why lambda?

    定義一個有名函數時def func():pass,只要名字不被刪除,就一直占著內存。如果只用一次,用完了還要del func。 但是lambda匿名函數,只是一個內存地址,沒有綁定變量名,會被回收。另外,簡單的函數用lambda寫更方便。

    lambda和內置函數map, reduce, filter,max的應用

    map 映射:map(函數, 序列)

    map迭代序列,將元素傳給函數,將函數返回的結果組成map obj這個迭代器,可以用list或for循環來查看。

    m = map(lambda x : x*2, [1, 2, 3, 4]) print(list(m)) # [2, 4, 6, 8]

    reduce 合并:reduce(函數,序列,初始值)

    在python3中使用reduce函數需要 from functools import reduce 導入。

    from functools import reduce print(reduce(lambda x,y : x+y, range(100))) # reduce循環序列的元素,讓函數每次接收兩個元素, # 返回的結果再和序列的下一個元素作累積計算

    filter 過濾:filter(函數,序列)

    循環序列的元素,讓函數判定元素的bool值,如果為真,返回元素組成的filter obj 迭代器對象。

    print(list(filter(lambda x : x > 0, [-3, -5, 2, 1]))) # [2, 1]

    max

    用max函數找出一個字典中的最大值。

    # 找出分數最高的那位同學 d = {'Ayhan': 100, 'Seb': 98, 'Tom': 97, 'Ronin': 98} res = zip(d.values(), d.keys()) # max() 遵循迭代器協議,如果傳入的字典,那么比較key的大小。所以用zip處理一下。 print(max(res)) # (100, 'Ayhan')

    max(dict, key=func) max函數中的key可以指定比較的對象。循環字典得到key,把字典key傳給key的函數處理后得到的返回值,再作比較。注意,max的key和字典的key不同。上面的栗子可以改寫:

    d = {'Ayhan': 100, 'Seb': 98, 'Tom': 97, 'Ronin': 98} print(max(d, key = lambda x : d[x])) # Ayhan

    迭代器協議

    很多內置函數都是遵循迭代器協議的,上面的函數:filter()、map()、reduce()、max()、min()、list()、for i in iterable。遵循迭代器協議的函數能對可迭代對象就行迭代。

    總結

    以上是生活随笔為你收集整理的内置函数与lambda匿名函数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。