![商品期货量化交易实战:以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=1739151405-1kRPWtiQnCE5YuifLHFbXP8xkzRYazWX-0-f8b04fcac4ac7ae1bf39fc9e4a751d6f)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_70_4.jpg?sign=1739151405-yIvEwVSZvzl9W64vYa1FmqESIn4xRd3e-0-bfb532c2caf5d49eea63a6a186d31f3a)
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_1.jpg?sign=1739151405-2S4ADiyGWPw1F6NjlJb23vPvALnxqUh0-0-a73498086db85dd38d709985817402a1)
在上述代码中,首先定义了3个变量,并且分别将其赋值为字符串、列表、字典,然后使用len()函数获取它们的长度。需要注意的是,在使用len()函数判断字典长度时,返回的是字典中的键值对数量。
2.9.2 range()函数
range()函数主要用于返回一个可以迭代的对象,这个对象是指定范围内的一系列数字。range()函数通常与for循环语句搭配使用,并且至少需要一个参数,示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_2.jpg?sign=1739151405-YQqpT6SHbCrZg75gGLLs8ncEboMtCKMk-0-58ef9ef1d182aec75f53cf011e3f2e24)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_3.jpg?sign=1739151405-jL65Ti1LeyEWf29jWNmBmzHScRfl0g15-0-1ed2f72068be03c7c42a4d9630c028ce)
在上述代码中,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=1739151405-Cc2e8afB0VBTlxEWCVZY3Lk5YCkEzbq5-0-051277cfaf4c3f34592aa00409375382)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_5.jpg?sign=1739151405-nEM3tE7AFqlCIwkI27pplgbxtvtKP1Az-0-45655739bad6684639f02a0b4547eef4)
range()函数还可以和len()函数搭配使用,通过使用列表索引,遍历一个列表(区别于for i in arr,注意变量i具体代表什么),示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_6.jpg?sign=1739151405-K13pMw9rykLGZySLLQojuC44GHxFf2V0-0-78b80e070181372f10bdb23b298b2be1)
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_1.jpg?sign=1739151405-2QKqNuFs2YqWEBZmNuSsm28aZ6U7J1Gl-0-edc7dcc0f1a46eab21d0badb28444f0d)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_2.jpg?sign=1739151405-RplgZ7svac4iKESGprLPxI6SjCaFTtjZ-0-cf24ecd5157e850e0652d1b360eb0f4c)
在上述代码中,在执行第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=1739151405-FoqkUCqyZbstwunAqdtAG5HtTNQfFEC1-0-7ec6923637959099429f97b5a1c9d888)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_4.jpg?sign=1739151405-gpwvUUAh4qM93f4oJPZzyXbpfHEPgFOf-0-5014cebed86f6c65ca82729d323a8130)
在上述代码中,首先定义了一个字符串变量,然后使用split()函数分割该字符串变量。split()函数中有一个参数,表示进行分割的字符。
2.9.4 type()函数
type()函数是既简单又实用的对象数据类型查询函数,它是一个内部函数,它的参数为要查询的对象,返回值为该对象的数据类型。示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_5.jpg?sign=1739151405-ILpRDgRysbaqIDcmUfNSgPE3NzicIVWr-0-91df43b9318334de1af5cd9906557477)
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_1.jpg?sign=1739151405-b8V1r2eUxVAJNnGnke6RepTU0VMDNuda-0-50c9d686fd0492febecaa43ff07785be)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_2.jpg?sign=1739151405-hBgFzoXAgPVIEQOCldq4TPD0CPVifzEL-0-acd9cdfc13fabdf66d19f999f25d6eeb)
在上述代码中,首先定义了3个变量,分别将其赋值为字符串、列表、字典,然后使用type()函数判断它们的数据类型,并且将其打印到日志信息中。
2.9.5 isinstance()函数
isinstance()函数主要用于判断一个对象的数据类型是否为某个已知的数据类型,类似于type()函数,区别在于:type()函数不会认为子类是一种父类类型,不考虑继承关系。isinstance()函数会认为子类是一种父类类型,考虑继承关系。示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_3.jpg?sign=1739151405-OcC3XcqTs4Oobt0Jsim5itIfwEFkDI8m-0-d0dc8348db88b3d7ad6cae3d01ff2f93)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_4.jpg?sign=1739151405-NdayOYl9V3b6TZBL9KA8QDqlh55eQ0qH-0-9d67e73c88298d44edfdac7f630e3395)
在上述代码中,第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=1739151405-vzJcsn2doieSbtZlW7txNQFaSWm14Kj6-0-2b45dc9f4ae133b74f858178d8ece5bb)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_74_2.jpg?sign=1739151405-ZwrvxsRzfX3nLjq13PHXBp05KA3DiRyy-0-7ecba578198047f1ce5b7f895f5ca1b8)
在上述代码中,首先使用import关键字导入math库,然后定义了一个变量a并将其赋值为3.14156,接着使用Python自带的int()函数将变量a向下取整并打印,再使用round()函数将变量a四舍五入取整并打印,最后使用math库中的ceil()函数将变量a向上取整并打印。