FASTAI2列表扩展类L#7:扩展函数 (摘自《TOP极宽智能量化系列课件》)
TOP极宽智能量化系列课件《FASTAI2列表扩展类L#简介》当中,已经对列表扩展类L基本情况进行了介绍,下面我们看看列表扩展类L的常用操作。 首先,我们看看列表扩展类L的内部模块架构图:
图 列表扩展类L内部架构图
更多资料请参见: 极宽量化公众号,免费订阅,欢迎大家关注。
| FASTAI智能量化论坛http://zwPython.com/forum.php?mod=forumdisplay&fid=65 【极宽QQ群】l 群号:1057170501 ,zwPython.com学习QQ群,面向py初学者和大众小白用户。l 群号:124134140,TOP极宽金融量化,三千人超大QQ群,面向专业金融实盘用户。l 群号:699266891,TFB极宽足球大数据QQ群 。l 群号:790548107,FASTAI智能量化。 |
由上图:列表扩展类L内部架构图,我们可以看出,列表扩展类L,常用的内置函数和方法有: l __getitem__,内部方法,=检索idx"Retrieve `idx` ,可以是idx索引列表、mask掩码或int整数项 l __setitem__,内部方法,根据idx下标索引,设置数据项。 l **_docs,注解说明。 l l range,与“range”相同,返回“L” 列表扩展类。 l split,数据切分,类似str.split,返回“L” 列表扩展类。 l copy,列表复制,类似list.copy,返回“L” 列表扩展类。 l sorted,="New",列表扩展类L按'key'键值排序。如果key是str字符串,则使用“attrgetter”属性函数。如果key为int整数,则使用“itemgetter”属性函数。 l unique,独特数值,去掉L当中的重复数据项。 l val2idx,从数值返回到idx索引的dict字典数据。 l filter,过滤器,按`f`函数筛选,将参数'args'和'kwargs`传递给'f'函数。 l argwhere,类似`filter`过滤器,但返回匹配项的索引”。 l map,映射运算,将函数`f`应用于所有`items`项,使用参数`args`和`kwargs`。 l map_dict,字典映射运算,类似`map`, 但是创建一个从'items'子项,到函数结果的dict字典。 l starmap,star映射运算,使用迭代函数`itertools.starmap`。 l itemgot,创建新的'L'对象,其中包含所有'items'子项的项目'idx'索引/下标。 l attrgot,使用所有`items`子项的`k`键值创建新的`L'对象,如果`items子项`包含dict字典,则`L`将为每个dict字典,包含关键字`k`的相应值。 l cycle,循环,类似itertools.cycle操作。 l enumerate,枚举,类似enumerate操作。 l zip,打包运算,创建新的'L'对象,属于`zip(*items)`操作。 l zipwith,打包运算,用'self`和每个'*rest`属性,进行zip打包运算,创建新的L对象。 l map_zip,映射打包,合并打包`zip`和`starmap`操作。 l map_zipwith,合并打包`zipwith` and`starmap`操作。 l concat,连接列表的所有元素。 l shuffle,随机(洗牌)变换数据。 l reduce,“装器`Wrapper,用于functools.reduce操作。 l sum,求和,项目总数。 l product,乘积运算,所有item子项进行乘积的总数。
根据列表扩展类L内部架构图,大家可以清楚了解列表扩展类L的内置函数和方法,可以分为以下三类: l 以“__”下划线开头的函数,属于duke内部函数,很少直接使用。 l 继承于List列表类的常规序列操作函数。 l L对象自行设计的扩展函数。
前面几节,大家已经学习了, 继承于List列表类的常规序列操作函数。 下面,我们分几节,对L对象的自行设计的扩展函数,逐一进行讲解。
案例#7,常用扩展函数
本节介绍列表扩展类L,常用的扩展函数:
l shuffle,随机(洗牌)变换数据。 l unique,去重函数,保留L对象当中独特的数据,unique函数去除其中重复的元素。 l val2idx,把L对象反向转换为Dict字典格式,其中L对象的idx下标索引,是转换后dict字典数据的v数据值;L对象的item数据值,是转换后dict字典数据的k健值;会自动过滤重复的item数据值。 l split,分割,根据sep分割符号(默认是空格),切分字符串,类似str.split函数,但返回值是L对象。 l concat,连接多个L对象子项、数据,生成一个新的L对象,支持链式编程。 l copy,复制,类似list.copy函数,但返回值是L对象。
案例文件名:fa2lsub007.py,建议大家采用统一的文件名保存课件程序代码,方便交流沟通。 我们先看看案例,以下是第1组程序代码: print('\n----- #1') a=L('btc',3,'eth',0,3,'ltc',2,'xrp') print('a:',a) # b=a.shuffle() print('b:',b) 生成L对象变量a,并用shuffle乱序函数处理,保存到变量b,便于后续函数工作,对应的输出信息: ----- #1 a: (#8) ['btc',3,'eth',0,3,'ltc',2,'xrp'] b: (#8) ['eth','xrp',3,2,3,'btc','ltc',0] 对应的内部变量示意图:
图 内部变量示意图
更多资料请参见: 极宽量化公众号,免费订阅,欢迎大家关注。
| FASTAI智能量化论坛http://zwPython.com/forum.php?mod=forumdisplay&fid=65 【极宽QQ群】l 群号:1057170501 ,zwPython.com学习QQ群,面向py初学者和大众小白用户。l 群号:124134140,TOP极宽金融量化,三千人超大QQ群,面向专业金融实盘用户。l 群号:699266891,TFB极宽足球大数据QQ群 。l 群号:790548107,FASTAI智能量化。 |
|