新聞中心
1 常用內(nèi)置常量
None是NoneType類型的唯一值,表示缺少值或空值,例如,當(dāng)函數(shù)沒有返回值時會默認(rèn)返回None值。

因為Python用“有”和“無”來表示“真”和“假”,“有”為真,“無”為假,所以None、0、空字符串、空列表、空字典都是假,非“空”數(shù)據(jù)則為真。
True和False是bool類型的值,True和False除了表示真和假,其本身也有值,True的值為1,F(xiàn)alse的值為0,可以與數(shù)值做計算。例如,5+True結(jié)果為6,3*False結(jié)果為0,1==True結(jié)果為True,1 is True結(jié)果為False,以上示例說明True的值為1,但True在內(nèi)存中的地址和整數(shù)1的地址不同。
None、True、False這三個常量在量化策略中會經(jīng)常用到。還有Ellipsis常量與省略號的字面含義相同,常用在注釋當(dāng)中。
2 整型
在計算交易手?jǐn)?shù)時需要用到整型,如1、2、3、4。
Python可以直接用整數(shù)進(jìn)行計算,當(dāng)在Python代碼中輸入整數(shù)數(shù)值時,Python會自動把輸入的數(shù)值創(chuàng)建為整型。
當(dāng)然,你也可以用整型類int()創(chuàng)建整數(shù),給整型類int()傳遞數(shù)值參數(shù),int()便會把數(shù)值參數(shù)轉(zhuǎn)換為整型。例如,int(5.89)的結(jié)果是5,轉(zhuǎn)換時只保留了整數(shù)部分;int('123')的結(jié)果是123,把字符串類型轉(zhuǎn)換成了整數(shù)類型。
我們可能需要從本地文件中讀取數(shù)據(jù),比如保存在本地的成交數(shù)據(jù),所讀取的數(shù)據(jù)通常是字符串類型,要把字符串類型轉(zhuǎn)換成整型才能參與相關(guān)計算。
整型可以是正數(shù)也可以是負(fù)數(shù),如3和?3。在量化策略中可定義凈持倉pos=3,表示凈多頭3手;定義pos= -3,表示凈空頭3手。
3 浮點(diǎn)型
價格、保證金等屬于浮點(diǎn)型數(shù)值,浮點(diǎn)型數(shù)值是帶有小數(shù)點(diǎn)的小數(shù)。
類似于整型,Python可以直接用浮點(diǎn)型數(shù)值計算,也可以用浮點(diǎn)型類float()創(chuàng)建浮點(diǎn)型數(shù)值。例如,float(5)結(jié)果是5.0,在轉(zhuǎn)換整數(shù)時增加了一個小數(shù)位;float('5.999')結(jié)果是5.999,把字符串轉(zhuǎn)換成了浮點(diǎn)型數(shù)值。
整型和浮點(diǎn)型相加減,結(jié)果會轉(zhuǎn)換成浮點(diǎn)型。如果在計算中想要保留兩位小數(shù),可以用round()函數(shù),例如,a=5.946326598,round(a,2)結(jié)果是5.95,經(jīng)過四舍五入之后保留兩位小數(shù)。
4 字符串類型
字符串是由一對英文單引號、一對英文雙引號、一對英文三單引號或一對英文三雙引號包圍的字符,交易品種、賬號、密碼等都是字符串類型。例如,'賬號'、"123456"、'''密碼'''、"""jkl"""都是合法的字符串。
字符串是序列類型的數(shù)據(jù),字符串的字符有位置(索引)屬性,從左到右字符的位置序號為0、1、2、3、4、5、6……從右到左的位置序號為?1、?2、?3、?4、?5、?6……
通常,字符串用一對英文單引號或一對英文雙引號定義,英文三單引號或三雙引號則用于多行注釋。
如果一個字符串里需要有英文單引號,則應(yīng)用英文雙引號定義;如果一個字符串里需要有英文雙引號,則應(yīng)用英文單引號定義。此時的英文單引號和雙引號為字符,而不是字符串的標(biāo)識,例如,"ad'cd"、'ef"gh',英文雙引號或單引號組成一對,成為字符串的標(biāo)識,字符串中的引號則作為字符以有別于字符串標(biāo)識,不會出現(xiàn)“含義”沖突。
字符串中可以有空格,因為空格也是字符。Python用“有”和“無”來表示“真”和“假”,沒有任何字符的字符串為假,有字符的字符串為真。例如,“沒有字符,為假;”有空格字符,為真。
Python可以直接處理代碼中的字符串,把字符串創(chuàng)建在內(nèi)存中并保存為字符串類型,也可以用字符串類str()創(chuàng)建字符串。例如,str(123)結(jié)果為'123',把數(shù)值123轉(zhuǎn)換成了字符串'123'。
如果要在字符串中包含控制字符或有特殊含義的字符,就需要使用轉(zhuǎn)義字符,常用的轉(zhuǎn)義字符如表2-1所示。
表2-1
例如,print("abc\"de")輸出abc"de,中間的英文雙引號被\轉(zhuǎn)義成字符,不會再與第一個英文雙引號組成字符串標(biāo)識。
當(dāng)在字符串前加上r或R,此時字符串為原始字符串,字符串中的“\”便不再是轉(zhuǎn)義字符,而是“\”本身。但字符串的最后一個字符不能是“\”,原始字符串主要用在文件路徑中。
代碼如下:
>>> print(r'C:\new\T0002\export\MA.csv')
C:\new\T0002\export\MA.csv
>>> print(r'C:\new\T0002\export\')
File "", line 1
print(r'C:\new\T0002\export\')
^
SyntaxError: EOL while scanning string literal
5 結(jié)構(gòu)數(shù)據(jù)類型
Python語言有許多的結(jié)構(gòu)數(shù)據(jù)類型,最常用的有列表、元組、字典,列表和元組是序列類型,它們的元素有位置(索引)屬性,而字典是集合類型,其元素沒有位置屬性。
5.1 列表
列表是以方括號“[ ]”包圍的數(shù)據(jù)集合,不同元素間以英文逗號“,”隔開,列表的元素可以是任意數(shù)據(jù)類型,也可以是列表,例如,[1]、[1,]、[1, 2, 'a', [1,3], 'bcd']都是合法的列表。
列表的元素有位置屬性,從左到右元素的位置序號為0、1、2、3、4、5、6……從右到左的位置序號為?1、?2、?3、?4、?5、?6……
Python可以直接處理代碼中的列表,Python會自動創(chuàng)建列表,也可以用列表類list()創(chuàng)建列表。例如,a=list()創(chuàng)建空列表,給list()傳遞的參數(shù)必須是可迭代的,list()會按照參數(shù)的元素創(chuàng)建列表。例如,list('adffgghjj')結(jié)果是['a', 'd', 'f', 'f', 'g', 'g', 'h', 'j', 'j'],字符串的每個字符被創(chuàng)建為列表的元素。
列表是可變的數(shù)據(jù)類型,對列表中的元素進(jìn)行修改時會直接修改原列表,而不是生成一個新列表。
5.2 元組
元組可看成特殊的列表,元組是以小括號“( )”包圍的數(shù)據(jù)集合,不同元素間以英文逗號“,”隔開,元組的元素可以是任意數(shù)據(jù)類型,也可以是元組,例如,(1,)、(1, 2, 'a', (1,3), 'bcd')都是合法的元組。當(dāng)元組的元素只有一個時也不能省略英文逗號,否則小括號便不是元組的標(biāo)識,而是語句運(yùn)算,例如,(1,)是元組,而(1)則是數(shù)值1。
同列表一樣,元組的元素有位置屬性,元素從左到右的位置序號為0、1、2、3、4、5、6……從右到左的位置序號為?1、?2、?3、?4、?5、?6……
Python可以直接處理代碼中的元組,Python也會把以英文逗號隔開的對象創(chuàng)建為元組,代碼如下:
>>> 1,2,3,4,5
(1, 2, 3, 4, 5)
Python也可以用元組類tuple()創(chuàng)建元組,例如,a=tuple()創(chuàng)建空元組,給tuple()傳遞的參數(shù)必須是可迭代的。tuple()會按照參數(shù)的元素創(chuàng)建元組,例如,tuple(['a', 'd', 'f', 'f', 'g'])的結(jié)果是('a', 'd', 'f', 'f', 'g'),把列表轉(zhuǎn)換成了元組。
元組是不可變數(shù)據(jù)類型,對元組中的元素進(jìn)行修改會創(chuàng)建一個新的元組,而不是直接修改原來的元組。若需要創(chuàng)建一組不可變的數(shù)據(jù)對象,可用元組創(chuàng)建。
元組主要用在變量定義中,代碼如下:
>>> a,b,c=1,2,3
>>> a;b;c
1
2
3
在上述代碼中,等號右邊的“1,2,3”是元組,Python會自動按位置順序把1賦值給a,把2賦值給b,把3賦值給c。
5.3 字典
字典是以大括號“{ }”包圍起來的數(shù)據(jù)集合,數(shù)據(jù)以“鍵:值”對的形式存在,“值”可以是任意類型的數(shù)據(jù),但“鍵”必須是不可變數(shù)據(jù)。不可變數(shù)據(jù)又稱為可哈希的數(shù)據(jù),可哈希數(shù)據(jù)具有唯一性,能產(chǎn)生唯一映射關(guān)系,因此,字典中元素的“鍵”都是不同的,可以通過“鍵”來訪問字典中的元素。例如,{'a':1,'b':2,3:'c'}和{'a':1,'b':2,c:[1,2]}都是合法的字典。
Python可以直接處理代碼中的字典,也可以用字典類dict()創(chuàng)建字典,因為字典的元素是以“鍵:值”對的形式存在,所以傳給dict()的參數(shù)應(yīng)是關(guān)鍵字形式,代碼如下:
>>> dict(h=1,i=2,j=3,k=4)
{'h': 1, 'i': 2, 'j': 3, 'k': 4}
字典是集合類型,因此字典中的元素沒有位置屬性,元素是無序的,可以通過元素的鍵訪問元素,不能通過位置訪問元素。字典是可變的數(shù)據(jù)類型,修改元素的值或增刪元素會直接改變原字典。
本文摘自《Python期貨量化交易》
文章名稱:Python期貨量化交易中常用的數(shù)據(jù)類型有哪些?
轉(zhuǎn)載來源:http://fisionsoft.com.cn/article/cdocipp.html


咨詢
建站咨詢
