![商品期货量化交易实战:以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=1739014794-koJQWnHLwh0xH0a3gZn5d4iYYeGuxewl-0-efaa6069a41be23d2f0464144feaa8e7)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_70_4.jpg?sign=1739014794-YfrigPUZZQkXo4TWe9oV7HHRIonIoFe8-0-3e63f26811cdf260664d7f7cb5a6dc57)
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_1.jpg?sign=1739014794-LgXW30ogmJOPRFDeMXqeOZ5RW0FKIArp-0-c7cce3cf08b048ce7d2742d5c878aa51)
在上述代码中,首先定义了3个变量,并且分别将其赋值为字符串、列表、字典,然后使用len()函数获取它们的长度。需要注意的是,在使用len()函数判断字典长度时,返回的是字典中的键值对数量。
2.9.2 range()函数
range()函数主要用于返回一个可以迭代的对象,这个对象是指定范围内的一系列数字。range()函数通常与for循环语句搭配使用,并且至少需要一个参数,示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_2.jpg?sign=1739014794-Ob223AGl3Ir7LB58gNpyGZtU1bO9egHi-0-6d71dd3753330c3ce2557357b62d12f5)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_3.jpg?sign=1739014794-2M2ExhuWov8DgxBYsO4DbX598HlavQoD-0-02490a226671945680afe4e7796d94b9)
在上述代码中,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=1739014794-8p6aUYkrZ6c4RcR2IzB8QTPEtjiNRNLd-0-33cbace4c7f91793e7ef0adefe4de5a5)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_5.jpg?sign=1739014794-pUq80Nr4r8XudSm80MeCBwgM8FnQozNn-0-7bc07bfc3d5444b8a68ac18340283667)
range()函数还可以和len()函数搭配使用,通过使用列表索引,遍历一个列表(区别于for i in arr,注意变量i具体代表什么),示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_71_6.jpg?sign=1739014794-cWwq79I58cZOJA9dNXo5Q9Q8oU3ge3lU-0-5ac003bdc896ad1911210f0593856813)
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_1.jpg?sign=1739014794-Z25K74m776o1T1mYC8GngYk027x3aIGH-0-17f311b48bc398d9de707b6099f39fc2)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_2.jpg?sign=1739014794-n0lrPsqZUUNTIsUg8j8kPUKO7TflI7MD-0-41c8aeeb6789013c3ec98acc55e49fa8)
在上述代码中,在执行第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=1739014794-QyDwZv2ilQUZFoHqXSFBG1y5FSBpjOPL-0-f89ad3edbdae4494a14fdc42878e02b1)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_4.jpg?sign=1739014794-P5cva4qtcInyCmLZSVX0uexiJSVRu3Z8-0-0bded4ccc5e0a85104aab1f4003b0e53)
在上述代码中,首先定义了一个字符串变量,然后使用split()函数分割该字符串变量。split()函数中有一个参数,表示进行分割的字符。
2.9.4 type()函数
type()函数是既简单又实用的对象数据类型查询函数,它是一个内部函数,它的参数为要查询的对象,返回值为该对象的数据类型。示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_72_5.jpg?sign=1739014794-qG9uCSqL9y4gLJtx65kuNODCxC9k0kR8-0-8b3cfd660b8cb463d2dd321b04c1852d)
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_1.jpg?sign=1739014794-UE5AXno7j2ToT0Lju4Prulc5i0wiSCpo-0-db8bd33f8f3a27d3079d5eaec296d782)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_2.jpg?sign=1739014794-s3p8PXWiBtVDZGrptGefKbWFLKfn57V7-0-4b1fa9227a013175deff0c0d2923fdbe)
在上述代码中,首先定义了3个变量,分别将其赋值为字符串、列表、字典,然后使用type()函数判断它们的数据类型,并且将其打印到日志信息中。
2.9.5 isinstance()函数
isinstance()函数主要用于判断一个对象的数据类型是否为某个已知的数据类型,类似于type()函数,区别在于:type()函数不会认为子类是一种父类类型,不考虑继承关系。isinstance()函数会认为子类是一种父类类型,考虑继承关系。示例代码如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_3.jpg?sign=1739014794-KhKbs3vpPeoNWxOiyDU9ZbN49mF4pjkE-0-8889872ebdfd1fbae5aa6c6c8a164b6c)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_73_4.jpg?sign=1739014794-Pbcd4P76kpBou1VK84ns6ptSRikF6fKe-0-0bd1fc08e0f752e31259b3e118469301)
在上述代码中,第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=1739014794-spO91q6Yj7GrTm2ZJdXH3xB87dNGOOEu-0-217c2ffd5a9da6c27d0330fb4a309ea5)
输出结果如下:
![](https://epubservercos.yuewen.com/F058EB/23020652409767806/epubprivate/OEBPS/Images/42673_74_2.jpg?sign=1739014794-AI9ZX96IvM3IiYZa2jeQVxADAwczZs8l-0-1e3de1e21e54d15ae7e0a21a9aea51fe)
在上述代码中,首先使用import关键字导入math库,然后定义了一个变量a并将其赋值为3.14156,接着使用Python自带的int()函数将变量a向下取整并打印,再使用round()函数将变量a四舍五入取整并打印,最后使用math库中的ceil()函数将变量a向上取整并打印。