Python 函數式編程 (2) — map

前幾篇的教學我們知道:可以利用list來記錄班上的成績。但是現在遇到一個狀況:班上的成績都太爛了我們想要調整分數,在Python中可以一次改好。

有兩種方式:

  • 使用Python中〔列表解析〕的寫法:
    initial_grade = [20, 36, 48, 50 ]
    final_grade = [ i*0.8+40 for i in initial_grade]
    print(final_grade)


    把原本的資料存在initial_grade中,並處理過後儲存到final_grade中。會發現在final_grade中所儲存的是處理過後的initial_grade成績。

  • 使用〔函數式編程〕map來寫:

    initial_grade = [20, 36, 48, 50 ]
    final_grade = map(lambda x: x*0.8+40, initial_grade )
    print(list(final_grade))


    利用函數式編程,並利用lambda就可以將兩張表作運算,並將答案儲存起來。不過要注意利用map出來的會是一個”物件”,所以我們要利用list把他轉換成列表的形式。

好啦~今天的教學大致上到這邊,不過大家可能會問為什麼要用map來寫呢?其實答案就是快,使用列表解析的時候其實裡面是利用for迴圈一次一次做,相對來說需要比較多的時間。還記得Python先天不良的劣勢就是慢嗎?特別是處理很大的數據量的時候,這樣子的狀況就會特別明顯,所以把這些細節練習好,code執行起來才不會又肥又慢喔~

Facebook Comments

發表迴響