A级片三级毛片中文字幕|97人人干人人爱|aaaaa毛片亚洲av资源网|超碰97在线播放|日本一a级毛片欧美一区黄|日韩专区潮吹亚洲AV无码片|人人香蕉视频免费|中文字幕欧美激情极品|日本高清一级免费不卡|国模大胆在线国产啪视频

AQF
首頁 備考指南 精品課程 名師團隊 職業(yè)前景
您現(xiàn)在的位置:首頁 量化金融分析師AQF課程丨Python基礎(chǔ)應(yīng)用:map與reduce

量化金融分析師AQF課程丨Python基礎(chǔ)應(yīng)用:map與reduce

發(fā)表時間: 2018-10-21 09:20:44 編輯:tansy

量化金融分析師AQF課程丨Python 雖然是面向?qū)ο蟮恼Z言,但其設(shè)計中融入多種編程范式的思想,使 Python 具有很大的靈活性。map()和 reduce() 函數(shù)的設(shè)計靈感就來源于函數(shù)式編程的思想。

  量化金融分析師AQF課程丨Python 雖然是面向?qū)ο蟮恼Z言,但其設(shè)計中融入多種編程范式的思想,使 Python 具有很大的靈活性。map()和 reduce() 函數(shù)的設(shè)計靈感就來源于函數(shù)式編程的思想。

  簡單講,函數(shù)式編程的主要思想是盡量將運算過程編寫成一系列的嵌套函數(shù)。 map() 和 reduce() 都是Python內(nèi)置的高階函數(shù)。所謂高階函數(shù),即以函數(shù)作為輸入?yún)?shù)或輸出結(jié)果的函數(shù),map() 和 reduce()的共同特征是以函數(shù)作為傳入?yún)?shù)。

  從運行效率的角度講,map()等其他python內(nèi)置函數(shù)是效率較高的,其次是列表解析,再次是生成器和for循環(huán),while循環(huán)最慢。

  以下是map()和reduce()的使用方法和例子:

  In [1]:

  # map() 最常見的用法是對列表做映射l = [ i for i in range(9)]print('l: ', l)print('\n')# 將匿名函數(shù)作為參數(shù)傳遞給map()函數(shù)# 匿名函數(shù)相關(guān)內(nèi)容詳見 Python基礎(chǔ)應(yīng)用之匿名函數(shù)# 匿名函數(shù)實現(xiàn)的功能是返回傳入?yún)?shù)的平方# map()函數(shù)實現(xiàn)的功能是將平方運算映射到列表 l 的每一項上# Python3 以后map()函數(shù)的返回值是一個map對象,使用list()函數(shù)將map對象轉(zhuǎn)化為list對象可以看到具體輸出結(jié)果l_sqr = map(lambda x: x**2, l)print('l_sqr: ', list(l_sqr))

  Out[1]:l: [0, 1, 2, 3, 4, 5, 6, 7, 8]

  l_sqr: [0, 1, 4, 9, 16, 25, 36, 49, 64]

  In [2]:

  # map() 函數(shù)可以接收多個可迭代對象做并行運算import pandas as pdname = ['Sheldon Cooper', 'Leonard Hofstadter', 'Howard Wolowitz', 'Rajesh Koothrappali']tel = ['8341-2579', '8643-5429', '8878-6432', '8571-2612']# 定義一個函數(shù),作為參數(shù)傳遞給 map() 函數(shù)# 函數(shù)的功能是輸入名字和電話,將名字分拆成姓和名,然后與電話號碼組合成一個list輸出def parse_name(name, tel):

  first_name, last_name = name.split(' ')return [first_name, last_name, tel]# 簡單參數(shù)測試一下single_output = parse_name('Sheldon Cooper', '38467')print('single_output: ', single_output)print('\n')# parse_name 函數(shù)作為參數(shù)傳遞給 map() 函數(shù),其余參數(shù)是用于并行計算的多個列表# 所謂并行計算,就是對多個可迭代對象對應(yīng)位置上的元素做運算phone_book = map(parse_name, name, tel)l = list(phone_book)print('phone_book: ', l)print('\n')# 進一步轉(zhuǎn)化為pandas dataframedf = pd.DataFrame(l, columns=['First_Name', 'Last_Name', 'Tel_No'])df

  Out[2]:

  single_output: ['Sheldon', 'Cooper', '38467']

  phone_book: [['Sheldon', 'Cooper', '8341-2579'], ['Leonard', 'Hofstadter', '8643-5429'], ['Howard', 'Wolowitz', '8878-6432'], ['Rajesh', 'Koothrappali', '8571-2612']]

First_Name Last_Name Tel_No
0 Sheldon Cooper 8341-2579
1 Leonard Hofstadter 8643-5429
2 Howard Wolowitz 8878-6432
3 Rajesh Koothrappali 8571-2612

  In [3]:

  # 使用 reduce() 函數(shù)需要從 functools 模塊導(dǎo)入from functools import reducel = [0, 1, 2, 3, 4, 5, 6, 7, 8]# reduce() 函數(shù)需要兩個參數(shù),第一個參數(shù)是一個函數(shù),第二個參數(shù)是一個可迭代對象# reduce() 函數(shù)的作用是將可迭代對象的前兩個元素作為參數(shù)傳遞給回調(diào)函數(shù),# 再將結(jié)果和第三個元素一起,再次作為參數(shù)傳給回調(diào)函數(shù),以此類推直到可迭代對象元素用盡返回結(jié)果# 此處將匿名函數(shù)作為參數(shù)傳遞給 reduce() 函數(shù),匿名函數(shù)的作用是對傳入的參數(shù)求和# 所以 reduce() 整體的作用是對整個列表做累加,得到的是一個數(shù)值結(jié)果(scalar value)l_sum = reduce(lambda x, y: x + y, l)l_sum

  Out[3]:

  36

  In [4]:

  # reduce() 也可以接受第三個參數(shù)作為迭代初始值,這樣最初傳入回調(diào)函數(shù)的會是第三個參數(shù)和可迭代對象的第一個元素l_sum2 = reduce(lambda x,y: x + y, l , 100)l_sum2

  Out[4]:

  136

  In [5]:

  # 應(yīng)用實例# 使用 map() 函數(shù)將代碼后綴截掉codes = ['300243.XSHE', '002504.XSHE', '300173.XSHE', '300023.XSHE', '600145.XSHG']codes_map = map(lambda x: x[:6], codes)print('codes_map: ', list(codes_map))print('\n')# 此處功能比較簡單,用列表解析也可以實現(xiàn),如果對元素操作復(fù)雜則更多單獨定義函最美的時光遇見你在最美的年華,遇到一個愛你的人,縱使剎那盛開,瞬間凋零,以一世癡念,守一場心靈的地老天荒,何嘗不是一種無以倫比的幸福?三千癡纏,只為一人,掬一捧旖旎心事,無論花開花謝,情,都會以一樹執(zhí)念,絢爛成靈魂的永恒。數(shù),然后用map()映射# 列表解析相關(guān)內(nèi)容見 《Python基礎(chǔ)應(yīng)用之列表解析》codes_comprehension = [code[:6] for code in codes]print('codes_comprehension: ', codes_short_comprehension)

  Out[5]:

  codes_map: ['300243', '002504', '300173', '300023', '600145']codes_comprehension: ['300243', '002504', '300173', '300023', '600145']以上是Python基礎(chǔ)應(yīng)用:map與reduce,覺得難不難?零基礎(chǔ)到入門,小編目測你命里就缺Python金融實戰(zhàn)應(yīng)用,線上線下同時進行,還有金程男神紀慧誠老師加持,入門Python穩(wěn)的一批!附上GIF動圖版,讓你能更直觀了解AQF課程~那么,就祝大家學習愉快!

  量化金融分析師AQF

  金程推薦: AQF考試 AQF報名 AQF培訓

  AQF考試群:760229148

  量化金融AQF交流群:737550026

  聲明▎更多內(nèi)容請關(guān)注微信號量化金融分析師。原創(chuàng)文章,歡迎分享,若需引用或轉(zhuǎn)載請保留此處信息。

  >>>返回首頁

吐槽

對不起!讓你吐槽了

/500

上傳圖片

    可上傳3張圖片

    2001-2025 上海金程教育科技有限公司 All Rights Reserved. 信息系統(tǒng)安全等級:三級
    中央網(wǎng)信辦舉報中心 上海市互聯(lián)網(wǎng)舉報中心 不良信息舉報郵箱:law@gfedu.net
    滬ICP備14042082號 滬B2-20240743 通過ISO9001:2015 國際質(zhì)量管理體系認證 滬公網(wǎng)安備31010902103762號 出版物經(jīng)營許可證 電子營業(yè)執(zhí)照

    掃描二維碼登錄金程網(wǎng)校

    請使用新版 金程網(wǎng)校APP 掃碼完成登錄

    登錄即同意金程網(wǎng)校協(xié)議及《隱私政策》