python alist(-1、2)_Python期货量化交易基础教程(2)

2、常用数据类型

2.1、常用内置常量:

Python解释器在启动时会创建None、True、False三个常量。None表示“无”,True表示“真”,Fals表示“假”。

None是NoneType类型的唯一值,表示缺少值或空值,例如函数没有返回值时会默认返回None值。

Python用“有”和“无”来表示“真”和“假”,“有”为真,“无”为假,所以None、0、空字符串、空列表、空字典都是假,非“空”数据则为真。

True和False是bool类型的值,True和False除了表示真和假,其本身也有值,True的值为1,False的值为0,可以与数值做计算,例如,5+True结果为6,3*False结果为0,1==True结果为True,1 is True结果为False,说明True的值为1,但True在内存中的地址和整数1的地址不同。

这三个常量在量化策略中会经常用到。

另外还有Ellipsis常量,与省略号“...”文字字面相同,常用在注释当中。

2.2、整型 int():

例如1、2、3、4等都是整数类型,计算交易手数时需要用到整型。

Python可以直接用整数进行计算,当在Python代码中输入整数数值时,Python会自动把输入的数值创建为整型。

也可以用整型类int()创建整数,给整型类int()传递数值参数,int()便会把数值参数转换为整型,例如,int(5.89)结果是5,转换时只保留了整数部分,int('123')结果是123,把字符串类型转换成了整数类型。

我们可能需要从本地文件中读取数据,比如保存在本地的成交数据,读取的数据通常是字符串类型,要把字符串类型转换成数值型才能参与相关计算。

整型可以是整数也可以是负数,例如,净持仓pos=3,表示净多头3手,pos=-3,表示净空头3手。

2.3、浮点型 float():

价格、保证金等是浮点型数值,浮点型数值即是带有小数点的小数。

类似于整型,Python可以直接用浮点型数值计算,也可以用浮点型类float()创建浮点型数值,例如,float(5)结果是5.0,转换整数时增加了一个小数位,float('5.999')结果是5.999,把字符串转换成了浮点型数值。

整型和浮点型相加减,结果会转换成浮点型。如果在计算中想要保留两位小数,可以用round()函数,例如,a=5.946326598,round(a,2)结果是5.95,四舍五入保留两位小数。

2.4、字符串类型 str():

字符串是由一对单引号、一对双引号、一对三单引号或一对三双引号包围的字符,交易品种、账号密码等都是字符串类型。例如,'账号'、"123456"、'''密码'''、"""jkl""",都是合法的字符串。

字符串是序列类型数据,字符串的字符有位置(索引)属性,从左到右字符的位置序号为0、1、2、3、4、5、6……,从右到左的位置序号为-1、-2、-3、-4、-5、-6……

通常,字符串用一对单引号或一对双引号定义,处在一行之中,三单引号或三双引号则用于多行注释中。

如果一个字符串里需要有单引号,则应用双引号定义,如果一个字符串里需要有双引号,则应用单引号定义,此时的单引号和双引号为字符,而不是字符串的标识,例如,"ad'cd"、'ef"gh',双引号或单引号组成一对,成为字符串的标识,字符串中的引号作为字符,有别于字符串标识,不会出现“含义”冲突。

字符串中可以有空格,因为空格也是字符。Python用“有”和“无”来表示“真”和“假”,没有任何字符的字符串为假,有字符的字符串为真,所以,''没有字符为假,' '有空格字符为真。

Python可以直接处理代码中的字符串,把字符串创建在内存中并保存为字符串类型,也可以用字符串类str()创建字符串,例如,str(123)结果为'123',把数值123转换成了字符串'123'。

如果要在字符串中包含控制字符或有特殊含义的字符,就需要使用转义字符,常用的转义字符有:\n 换行符

\t 制表符(Tab)

\r 回车(Enter)

\\ 反斜杠(\)

\' 单引号字符串中的单引号

\" 双引号字符串中的双引号

例如,print("abc\"de")输出abc"de,中间的双引号"被\转义成字符,不会再与第一个"组成字符串标识。

当在字符串前加上r或R,此时字符串为原始字符串,字符串中的\便不再是转义字符,而是“\”本身,原始字符串主要用在文件路径中,但字符串最后一个字符不能是“\”。

例如:print(r'C:\new\T0002\export\MA.csv'),输出C:\new\T0002\export\MA.csv

>>> print(r'C:\new\T0002\export\MA.csv')

C:\new\T0002\export\MA.csv

>>>print(r'C:\new\T0002\export\')提示语法错误,SyntaxError: EOL while scanning string literal

>>> print(r'C:\new\T0002\export\')

File "", line 1

print(r'C:\new\T0002\export\')

^

SyntaxError: EOL while scanning string literal

>>>

2.5、结构数据类型:

Python语言有许多的结构数据类型,最常用的有列表、元组、字典,列表和元组是序列类型,元素有位置(索引)属性,字典是集合类型,元素没有位置属性。

2.5.1、列表类 list():

列表是以方括号“[ ]”包围的数据集合,不同元素间以半角逗号“,”隔开,列表的元素可以是任意数据类型,因此也可以是列表,例如,[1]、 [1,]、 [1, 2, 'a', [1,3], 'bcd']都是合法的列表。

列表的元素有位置属性,从左到右元素的位置序号为0、1、2、3、4、5、6……,从右到左的位置序号为-1、-2、-3、-4、-5、-6……

Python可以直接处理代码中的列表,Python会自动创建列表类型,也可以用列表类list()创建列表,例如,a=list()创建空列表,给list()传递的参数必须是可迭代的,list()会按照参数的元素创建列表,例如,list('adffgghjj')结果是['a', 'd', 'f', 'f', 'g', 'g', 'h', 'j', 'j'],字符串的每个字符被创建为列表的元素。

列表是可变数据类型,对列表中的元素修改时会直接修改原列表,而不是生成一个新列表。

2.5.2、元组类 tuple():

元组可看成特殊的列表,元组是以小括号“( )”包围的数据集合,不同元素间以半角逗号“,”隔开,元组的元素可以是任意数据类型,也可以是元组,例如,(1,)、(1, 2, 'a', (1,3), 'bcd')都是合法的元组,元组的元素只有一个时也不能省略逗号,否则小括号便不是元组的标识,而是语句运算,例如,(1,)是元组,(1)是数值1。

同列表一样,元组的元素有位置属性,从左到右元素的位置序号为0、1、2、3、4、5、6……,从右到左的位置序号为-1、-2、-3、-4、-5、-6……

Python可以直接处理代码中的元组,Python也会把以逗号隔开的对象创建为元组,例如:

>>> 1,2,3,4,5

(1, 2, 3, 4, 5)

>>>

也可以用元组类tuple()创建元组,例如,a=tuple()创建空元组,给tuple()传递的参数必须是可迭代的,tuple()会按照参数的元素创建元组,例如,tuple(['a', 'd', 'f', 'f', 'g'])结果是('a', 'd', 'f', 'f', 'g'),把列表转换成了元组。

元组是不可变数据类型,对元组中的元素修改会创建一个新的元组,而不是直接修改原元组,若需要创建一组不可变的数据对象,可用元组创建。

元组主要用在变量定义中,例如:

>>> a,b,c=1,2,3

>>> a;b;c

1

2

3

>>>

右边1,2,3是元组,Python自动按位置顺序把1赋值给a、2赋值给b、3赋值给c。

2.5.3、字典类 dict():

字典是以大括号{ }包围起来的数据集合,数据以“键:值”对的形式存在,“值”可以是任意类型的数据,但“键”必须是不可变数据,不可变数据又称为可哈希的,可哈希数据具有唯一性,能产生唯一映射关系,因此,字典中元素的“键”都是不同的,可以通过“键”来访问字典中的元素。

例如,{'a':1,'b':2,3:'c'},{'a':1,'b':2,c:[1,2]},都是合法的字典。

Python可以直接处理代码中的字典,也可以用字典类dict()创建字典,因为字典的元素是“键:值”对的形式存在,所以传给dict()的参数应是关键字形式,例如,dict(h=1,i=2,j=3,k=4)结果是{'h': 1, 'i': 2, 'j': 3, 'k': 4}

>>> dict(h=1,i=2,j=3,k=4)

{'h': 1, 'i': 2, 'j': 3, 'k': 4}

>>>

字典是集合类型,因此字典中的元素没有位置属性,元素是无序的,可以通过元素的“键”访问元素,不能用位置访问元素。

字典是可变数据类型,修改元素的值或增删元素会直接改变原字典。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值