![商品期货量化交易实战:以Python为工具](https://wfqqreader-1252317822.image.myqcloud.com/cover/372/43738372/b_43738372.jpg)
2.9 Python中的常用内置函数
2.9.1 len()函数
len()函数主要用于返回对象的长度或元素数量,主要适用于字符串、列表、字典等数据。如果是字符串,则返回字符数量;如果是列表,则返回元素数量;如果是字典,则返回键值对数量。示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_70_3.jpg?sign=1739025618-egeuhpthjap3D4nPestOsAZFs1dA6tai-0-c23c67731eb9b16502e6e27cb6fcbff4)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_70_4.jpg?sign=1739025618-4Tp2qGJPcI6v6ELfQQdvXmQMuXhmB155-0-86b298d527ee4f6c1b02f5be4af233bf)
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_1.jpg?sign=1739025618-miyo0SVdBTEwXBRnZc3c1bO1pkyFonCx-0-8eacc8af1b07c13dcbdb2a7a068b7289)
在上述代码中,首先定义了3个变量,并且分别将其赋值为字符串、列表、字典,然后使用len()函数获取它们的长度。需要注意的是,在使用len()函数判断字典长度时,返回的是字典中的键值对数量。
2.9.2 range()函数
range()函数主要用于返回一个可以迭代的对象,这个对象是指定范围内的一系列数字。range()函数通常与for循环语句搭配使用,并且至少需要一个参数,示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_2.jpg?sign=1739025618-0afRV0hNZdFIDNI6Asgq9QwxaXCiw4oS-0-ab798edb68f9a23fc827981efc42988e)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_3.jpg?sign=1739025618-z0H9sy5u0saPS7AjSinUan0hq6hCUPBs-0-9825644a548739c70fc3c9c21a90a8e7)
在上述代码中,range(5)遵循左开右闭的原则,从0开始(包含0)到5结束(不包含5),产生了一个从0到4的数列。
可以给range()函数传两个参数,第1个参数表示起始数字,第2个参数表示结束数字,同样遵循左开右闭原则,示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_4.jpg?sign=1739025618-AD1xBOZNcofEMi5yIwjfJM2xLNa7tJ10-0-4a558a22ea4555dbeaed0232a3c14244)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_5.jpg?sign=1739025618-3JVHDERh1rKIlikLp75FeSrxjHPrK1rI-0-8fd8b7a1ccaee066890fff05df476590)
range()函数还可以和len()函数搭配使用,通过使用列表索引,遍历一个列表(区别于for i in arr,注意变量i具体代表什么),示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_6.jpg?sign=1739025618-jwCFVKB8LLyPJ6Y0kBWRJdFfU7MB6g7G-0-12fa40d1957b662db27ad37943f319d4)
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_1.jpg?sign=1739025618-oMKzW5ctVOojnOTZPoHNVjMxz1vEs4Jm-0-b054aae16c3d339985907ba23a1a8919)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_2.jpg?sign=1739025618-JD6AWzVzpQklSnWUcS8T1EfLYwrPl9Xr-0-fe4ce28d2f988e32d8cd261662065b24)
在上述代码中,在执行第1个循环时,每次打印i变量,显示的是字母,说明每次从arr列表中取出元素并将其赋给i,然后打印i;在执行第2个循环时,每次打印i变量,显示的是数值,说明i是列表中元素的索引。
2.9.3 split()函数
split()函数主要用于对字符串进行分割,返回分割后的字符串列表。示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_3.jpg?sign=1739025618-X3S28qm8SDHKq9xswKd3OBImdRN8yIZS-0-8f9dc16b768068e9bf1f83714c86d591)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_4.jpg?sign=1739025618-dgXLGagWpNK6TwiebdJp4Gz8ggWz5wAr-0-9370ef5bade113c35e5f0bf7b15a817d)
在上述代码中,首先定义了一个字符串变量,然后使用split()函数分割该字符串变量。split()函数中有一个参数,表示进行分割的字符。
2.9.4 type()函数
type()函数是既简单又实用的对象数据类型查询函数,它是一个内部函数,它的参数为要查询的对象,返回值为该对象的数据类型。示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_5.jpg?sign=1739025618-OgisBLM0jp6KWwza1nsse6rXZ9YHvz43-0-956111e506639d91b18c44600eaf1607)
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_1.jpg?sign=1739025618-3M4JUnOwTwS5sdaiyK0NCi50Nuf2OVJd-0-eb97e1eda30d7d11bcc9704c8977a7ba)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_2.jpg?sign=1739025618-8DqeZytYbnvhJg1oSF8MuMyQQxobEHFP-0-938f3bb69f648b90f1064a6862da43ee)
在上述代码中,首先定义了3个变量,分别将其赋值为字符串、列表、字典,然后使用type()函数判断它们的数据类型,并且将其打印到日志信息中。
2.9.5 isinstance()函数
isinstance()函数主要用于判断一个对象的数据类型是否为某个已知的数据类型,类似于type()函数,区别在于:type()函数不会认为子类是一种父类类型,不考虑继承关系。isinstance()函数会认为子类是一种父类类型,考虑继承关系。示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_3.jpg?sign=1739025618-bIOkDU3aYkpUVgGAjK3gu1hWkurWFd2q-0-3a1e5e1e926488ccafa6984ea7582545)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_4.jpg?sign=1739025618-zMFXxfC2cLgQAlYdv1OsiH5KSIffbndU-0-c61cb321f3e106098b636ff02af6388d)
在上述代码中,第1个参数是要判断的对象,第2个参数为要对比的数据类型。因为变量a为浮点型数据,所以isinstance(a,float)返回True;因为变量b不是浮点型数据,所以isinstance(b,float)返回False。
2.9.6 取整函数
在量化交易中,对数据进行取整处理是不可避免的,取整方式包括向下取整、四舍五入取整、向上取整等。Python提供了很多用于将浮点型数据取整的函数。
● int()函数主要用于向下取整。
● round()函数主要用于四舍五入取整。
● math库中的ceil()函数主要用于向上取整。
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_74_1.jpg?sign=1739025618-B113W1qfG3jZAhBbGWZh4JWjE4NqDRzG-0-21d74d88d9d9562f797e578b0d68587d)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_74_2.jpg?sign=1739025618-w1mGoDVEPkRkAWRI4RcpHdR2TScnikSe-0-38e5ced19233a291abc27bcc1e4db48f)
在上述代码中,首先使用import关键字导入math库,然后定义了一个变量a并将其赋值为3.14156,接着使用Python自带的int()函数将变量a向下取整并打印,再使用round()函数将变量a四舍五入取整并打印,最后使用math库中的ceil()函数将变量a向上取整并打印。