iT邦幫忙

2022 iThome 鐵人賽

DAY 15
0
Software Development

燃燒大三的成果發表系列 第 15

燃燒大三的成果發表第十五天 - 其他用法(上)

  • 分享至 

  • xImage
  •  

今天我要來介紹一些我覺得很有用的用法,可是不知道如何分類,所以統一在這邊分享

  1. lambda
  2. defaultdict
  3. map
  4. reduce
  5. filter
  6. sorted & enumerate

lambda

lambda可以用來宣告一個匿名函數,也可以想像成是宣告一個叫lambda的函數,他的用法很簡單,跟我們一般def宣告函數用法很像。

def lambda_func(a, b):
    return a+b
print(lambda_func(1, 2))

#上面的函數等同於下面
c = lambda a, b: a+b
print(c(1, 2))

defaultdict

這個東西我覺得非常的棒,這個方法可以將我們輸入參數的型態,給定那個value輸入參數型態的預設值,簡單來說就是已經幫你在value插入空值,不是None哦,我們底下來看看範例:

from collections import defaultdict


b = defaultdict(list)
b["1"].append(("鐵", "人", "賽"))
print(b)
# defaultdict(<class 'list'>, {'1': [('鐵', '人', '賽')]})

像是我這邊我預設給list,我就會有一個{"1":[]}這樣結構的資料,我們可以看到,他在我新增key的value,已經幫我新增我給定參數型態空值,像是這邊就是一個空list,dict就是空dict,這樣就有一個兩層的架構。

如果你以為這樣就叫非常的棒,那你就太天真了,時常我們要回傳資料的結構,長的各種奇形怪狀,dict包list,dict包dict再包list,各種巢狀結構的情況,這個時候我們可以加上,上面的匿名函數這樣做:

from collections import defaultdict

a = defaultdict(lambda :defaultdict(dict))
a["1"]["2"]["3"] = "ya"
print(b)
# defaultdict(<function <lambda> at 0x10fa7e4c0>, {'1': defaultdict(<class 'dict'>, {'2': {'3': 'ya'}})})

或是

from collections import defaultdict

a = defaultdict(lambda :defaultdict(lambda :defaultdict(list)))
a["1"]["2"]["3"].append("ya")
print(a)
# defaultdict(<function <lambda> at 0x108ac94c0>, {'1': defaultdict(<function <lambda>.<locals>.<lambda> at 0x108ac9a60>, {'2': defaultdict(<class 'list'>, {'3': ['ya']})})})

當然還有其他的寫法,我只是舉一種我比較常用的用法,明天我要來介紹map


上一篇
燃燒大三的成果發表第十四天 - 檔案處理
下一篇
燃燒大三的成果發表第十六天 - map
系列文
燃燒大三的成果發表30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言