![商品期货量化交易实战:以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=1739291657-XZxyM5yJxb9ozADIwT4hceP7mRvRYwJA-0-d841b53d1f6dcf7e4526531ad7ee1876)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_70_4.jpg?sign=1739291657-hFikB9tjxpVNZHuhmLxON1niW0CejSuF-0-bcf956e61dfb8ae441c81b79144dec99)
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_1.jpg?sign=1739291657-dMMAlrUUAOZ1GUWZjlJ2lJovOB2sJgFD-0-c9aa60be784137f2d2097fc6bd2d4f39)
在上述代码中,首先定义了3个变量,并且分别将其赋值为字符串、列表、字典,然后使用len()函数获取它们的长度。需要注意的是,在使用len()函数判断字典长度时,返回的是字典中的键值对数量。
2.9.2 range()函数
range()函数主要用于返回一个可以迭代的对象,这个对象是指定范围内的一系列数字。range()函数通常与for循环语句搭配使用,并且至少需要一个参数,示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_2.jpg?sign=1739291657-0FFQikeILyRzPZdgGwG7FPclXTjLQNVi-0-90c484774bd530b2ffd2701c324a40b6)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_3.jpg?sign=1739291657-0vXZPQK2CZ5PVXrcop43qO3KMv98oM34-0-05582f4d2b4233937343af868c360aa4)
在上述代码中,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=1739291657-rr0HU4dupRDrRHtsG8Bu6ilW239QXBOH-0-eda84a68d85fc224086df7749cf5aca2)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_5.jpg?sign=1739291657-raZaF1FAiyIyakU4P65yO7mCQrvv8dJ4-0-6e6ae70c26784f0f2e37ebc88f6fb390)
range()函数还可以和len()函数搭配使用,通过使用列表索引,遍历一个列表(区别于for i in arr,注意变量i具体代表什么),示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_6.jpg?sign=1739291657-TnAxP5MTVR47NpxV0IH0EkpgFkAfzuJY-0-fc6ad5a0f5c279c6fe8ee09c45b73ee8)
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_1.jpg?sign=1739291657-YpGMZybqXQ1LiW9MY3zcmdsJhqm1UhjH-0-9a2b2a9597d220aa063466062560fc39)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_2.jpg?sign=1739291657-11KGd1eem0O6GD5FYSAhuLA8TSOQPucO-0-85e9195e2f1677188acb59300ad88cc2)
在上述代码中,在执行第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=1739291657-Hokh7g3UbYtYfG8zRhAf9b3Yiix6pShN-0-8c302f0431aedc22e41d4017642885f0)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_4.jpg?sign=1739291657-nbdxHLWJT2mZbRyf332CqLn06T8kUhW3-0-abf5effecf8ec99b5ad89757c72fcb91)
在上述代码中,首先定义了一个字符串变量,然后使用split()函数分割该字符串变量。split()函数中有一个参数,表示进行分割的字符。
2.9.4 type()函数
type()函数是既简单又实用的对象数据类型查询函数,它是一个内部函数,它的参数为要查询的对象,返回值为该对象的数据类型。示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_5.jpg?sign=1739291657-xmhbl255QOzZN1vDSfca5fUlRv9HHYfV-0-c28346774bbe7effb075d62abca2e632)
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_1.jpg?sign=1739291657-tdFlaDVa6IpKpFinznJjnYmDop3VMtEB-0-1793f11c027941766813feba30faa6f8)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_2.jpg?sign=1739291657-etKi4xP1Pg33tD5bk8UmuYX2JiVCJc4Z-0-58f089ff974c6d57c7906027230cd70f)
在上述代码中,首先定义了3个变量,分别将其赋值为字符串、列表、字典,然后使用type()函数判断它们的数据类型,并且将其打印到日志信息中。
2.9.5 isinstance()函数
isinstance()函数主要用于判断一个对象的数据类型是否为某个已知的数据类型,类似于type()函数,区别在于:type()函数不会认为子类是一种父类类型,不考虑继承关系。isinstance()函数会认为子类是一种父类类型,考虑继承关系。示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_3.jpg?sign=1739291657-2ZmUkoghgD3GNLLfGz6U8lmDmctBEIJd-0-cd22f9b0c442e248ad72e0f915998e38)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_4.jpg?sign=1739291657-CKHbAAptGhZTX56sBHfyPeUVoocOt2sL-0-cdf74b47a14af3df518907a922618045)
在上述代码中,第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=1739291657-KuUIVa4Jkhjfmtr7C1m4Jw9ZOorHYLbb-0-c72769175c18d41ee33edfc8264d981c)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_74_2.jpg?sign=1739291657-Q0LjBbskJEZVDSno1Wn6m9K7k05XOGzu-0-410db355c0334a015df95f9618090ee6)
在上述代码中,首先使用import关键字导入math库,然后定义了一个变量a并将其赋值为3.14156,接着使用Python自带的int()函数将变量a向下取整并打印,再使用round()函数将变量a四舍五入取整并打印,最后使用math库中的ceil()函数将变量a向上取整并打印。