量化金融分析師AQF丨列表推導(dǎo)式是 Python 中的一項(xiàng)特色語(yǔ)法,功能是快速生成一個(gè)列表,有代碼簡(jiǎn)潔且功能強(qiáng)大的特點(diǎn)。
列表推導(dǎo)式在效率方面也比用使用for循環(huán)運(yùn)行效率更高,這是因?yàn)镻ython 中的內(nèi)置函數(shù)基本都是用C語(yǔ)言實(shí)現(xiàn)的,因此列表推導(dǎo)式內(nèi)部的迭代是以C語(yǔ)言的速度運(yùn)行,因此在列表推導(dǎo)式和for循環(huán)能夠?qū)崿F(xiàn)相同的目的時(shí),列表推導(dǎo)式是優(yōu)先選擇。
以下是7段詳細(xì)學(xué)習(xí)代碼和具體注釋?zhuān)?/strong>
In[1]:
# 基本語(yǔ)法
l =[fun(var) for var in iterable]
# iterable 是產(chǎn)生元素 var的可迭代對(duì)象, 可以對(duì) var 做進(jìn)一步運(yùn)算產(chǎn)生新的列表
In[2]:
# 產(chǎn)生一列偶數(shù)
l = [i *2 for i in range(10)]
print(l)
Out[2]:
[0,2, 4, 6, 8, 10, 12, 14, 16, 18]
In[3]:
# 列表推導(dǎo)式可以加入挑選條件
m = [i *2 for i in range(10) if i %5==0]
# 只有 i 能整除 5 的情況下, i才能進(jìn)入一下步推導(dǎo)運(yùn)算
print(m)
Out[3]:
[0, 10]
In[4]:
# 列表推導(dǎo)式可以嵌套
month=['%d-%02d'%(year, mon) for year in [2016, 2017] for monin range(1,13)]
print(month)
Out[4]:
['2016-01', '2016-02','2016-03', '2016-04', '2016-05', '2016-06', '2016-07', '2016-08', '2016- 09','2016-10', '2016-11', '2016-12', '2017-01', '2017-02', '2017-03', '2017-04','2017-05', '2017-06', '2017-07', '2017-08', '2017-09', '2017-10', '2017-11', '2017-12']
In[5]:
# 列表推導(dǎo)式中可以執(zhí)行更復(fù)雜的計(jì)算
mod_month =[int(m[:4], m[5:])
for m in month[:12]]
print(mod_month)
Out[5]:
[201601, 201602,201603, 201604, 201605, 201606, 201607, 201608, 201609, 201610, 201611, 201612]
In[6]:
# 列表推導(dǎo)式的語(yǔ)法也可以推廣到字典
name =['A', 'B', 'C']
ID = [1, 2,4]
pair ={n: _id for n, _id in zip(name, ID)}
# zip() 函數(shù)的功能是將多個(gè)數(shù)組對(duì)應(yīng)位置的元素形成元組,再形成以這些元組為元素的列表
print(pair)
Out[6]:
{'A': 1, 'B': 2, 'C':4}
In[7]:
# 實(shí)戰(zhàn)應(yīng)用
# 通過(guò) tushare 獲取多只股票的日線漲跌幅數(shù)據(jù)
import tushare as ts
import pandas as pd
stocks =['600868', '000002', 'hs300']
# 使用字典推導(dǎo)式將每個(gè)股票代碼與對(duì)應(yīng)的數(shù)據(jù)形成字典
pct_change={stock: ts.get_hist_data(stock,'2017-07-17', '2017-07-21','D')['p_change'] for stock in stocks}
# 根據(jù)字典內(nèi)容生成對(duì)應(yīng)的 dataframe
df = pd.DataFrame(pct_change)
print(df.head(5))
Out[7]
000002 600868 hs300
2017-07-17 NaN -5.59 -1.07
2017-07-18 2.89 1.53 0.10
2017-07-19 -0.63 2.38 1.71
2017-07-20 0.83 0.42 0.49
2017-07-21 -2.25 -1.05 -0.51
>>>點(diǎn)擊了解Python金融實(shí)戰(zhàn)應(yīng)用
附上GIF動(dòng)圖,更直觀了解Python金融實(shí)戰(zhàn)應(yīng)用。那么祝大家學(xué)習(xí)愉快~
(7).jpg)
.jpg)
往期精彩回顧:
AQF丨Python基礎(chǔ)應(yīng)用之列表推導(dǎo)式
金程推薦: AQF考試 AQF報(bào)名 AQF培訓(xùn)
量化金融分析師AQF交流答疑群:737550026
聲明▎更多內(nèi)容請(qǐng)關(guān)注微信號(hào)量化金融分析師。原創(chuàng)文章,歡迎分享,若需引用或轉(zhuǎn)載請(qǐng)保留此處信息。




