多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
![](http://www.rhinostudio.cn/files/course/2019/03-05/220109568ac2653018.png) ## **Path Mapper** 数据结构编辑器,GH当中,最强的数据结构处理运算器,没有之一。可以做很多事情。我们可以直接右键点击,选择一些已经预设好的功能。 ![](http://www.rhinostudio.cn/files/course/2019/03-07/224122296837498648.png) **Create Null Mapping** NUll嘛,自然就是什么都不操作呗,之前什么样,之后还什么样。但是你可以看到Path Mapper运算器上显示了文字{A;B;C},而这个就是输入端的数据结构格式。意思是有三级路径,只不过实际上前两组是冗余的{0;0}。 ![](http://www.rhinostudio.cn/files/course/2019/03-07/224533d7d3be494972.png) **Create Flatten Mapping** 即我们前面刚讲的运算器flatten,flatten的本质嘛,不就是砍掉所有数据结构,把所有数据按顺序放在{0}或者你指定的其他路径内嘛,所以你学了path mapper应该是对数据结构有了更深的理解。 ![](http://www.rhinostudio.cn/files/course/2019/03-07/224914aaae28506352.png) 所以这时你完全可以双击path mapper打开编辑窗口,修改Target路径名称,想怎么改就怎么改。 ![](http://www.rhinostudio.cn/files/course/2019/03-07/2252022565d0834818.png) **Creat Graft Mapping** 即Graft,给数据单独成组,那你可以看到,Path Mapper上显示{A;B;C}(i)到{A;B;C;i},也就是说,本来三级路径,i是数据个数,现在,编程四级数据,多了一级“i”,也就是根据数据个数,再分组。这就是Graft的本质。 ![](http://www.rhinostudio.cn/files/course/2019/03-07/225852c0bd99917633.png) **Create Trim Mapping ** 即,Trim Tree,修剪数据,网上砍了一级,Path Mapper上显示{A;B;C}到{A;B},C哪去了?被砍了呗,所以C级路径上的所有数据都被放到{0;0}里了,而{0;0}本身只有一支,所以所有数据都被放到一起了。 ![](http://www.rhinostudio.cn/files/course/2020/04-17/102950eb62e3151137.png) 那要是想砍两级咧?简单: **Create Reverse Mapping** 即运算器revers list,翻转数列,不就是把前面的数据放到后面,后面的放到前面,所以你可以看到path mapper变成了,{A;B;C}(i)到{A;B;C}(item\_count - 1 - i),而item\_count就是用来求列表长度的,-1是因为列表从0开始计数,-i那就是翻转数列咧~是不是清晰了呢~? ![](http://www.rhinostudio.cn/files/course/2019/03-08/000100c85cfd667163.png) **Create Renumber Mapping** 无视原数据结构分级,讲所有数据结构分支逐个排列。管你之前十几大组几小组,现在统统01234挨个排列数据结构。而这里的path\_index,其实就是用路径名称的序号来代替原数据结构。 ![](http://www.rhinostudio.cn/files/course/2019/03-08/000547ba0fe9912532.png) ![](http://www.rhinostudio.cn/files/course/2019/03-09/12075178b0e0448640.png) 经过上面的默认功能的介绍,相信你已经知道Path Mapper是一个多么强大的运算器了,别急,还没结束,我们再来看看path mapper还可以干什么~比如: {A}(i)-{i}(A),就是flip matrix,翻转数据结构的本质。 ![](http://www.rhinostudio.cn/files/course/2019/03-09/1105404a2356053786.png) ok~升级一下难度~变成三组数据结构,这时候flip matrix就失效了,flip matrix处理不了复杂数据结构,这时候你就必须依赖Path mapper了。 ![](http://www.rhinostudio.cn/files/course/2019/03-09/11083752f929453284.png) 你也可以~再进一步~使得上下可以连线。总之,你可以随心所欲的修改其分组方式。 ![](http://www.rhinostudio.cn/files/course/2019/03-09/11094261094f651394.png) 再比如呢:{A;B}(i)--{A;B;floor(i/(item\_count/4))},把数据分成四组,不论数据到底有多少个,统统分成四组。不过我估计大家会有点迷糊,看不大懂是什么意思,没事,我来给大家解读一下。 ![](http://www.rhinostudio.cn/files/course/2019/03-09/1124375a5401265692.png) 首先,你在输入的时候不要使用中文输入法,可能会出错,然后呢,我们来看item\_count求得就是当前分支内list的数量,求出来应该是10,因为咱们之前的series等差数列总共就十个数嘛,然后/4,这里需要注意一下“/”“\\”这俩是不一样的,区别就是: ![](http://www.rhinostudio.cn/files/course/2019/03-09/112855791a46680477.png) 所以在使用的时候千万别用错了。所以item\_count求出10再除以4得到2.5,然后是i/(item\_count/4),那么我们知道,i其实是list里的序号,那我们简单列举几个你就知道了, i=0也就是序号为0的时候,0/2.5=0 i=1也就是序号为1的时候,1/2.5=0.4 i=2也就是序号为2的时候,2/2.5=0.8 i=3也就是序号为3的时候,3/2.5=1.2 i=4也就是序号为4的时候,4/2.5=1.6 i=5也就是序号为5的时候,5/2.5=2 i=6也就是序号为5的时候,6/2.5=2.4 ...... 依次类推,会得到十个值是不,那再看前面还有一个flooor(x)的函数,这是啥?其实你之前就接触过,简单说,就是返回不大于x的最大的整数。 ![](http://www.rhinostudio.cn/files/course/2019/03-09/113730a73181505797.png) 所以呢 i=0也就是序号为0的时候,floor(0/2.5)=0 i=1也就是序号为1的时候,floor(1/2.5)=0 i=2也就是序号为2的时候,floor(2/2.5)=0 i=3也就是序号为3的时候,floor(3/2.5)=1 i=4也就是序号为4的时候,floor(4/2.5)=1 i=5也就是序号为5的时候,floor(5/2.5)=2 i=6也就是序号为6的时候,floor(6/2.5)=2 ...... ![](http://www.rhinostudio.cn/files/course/2019/03-09/114216862a89397791.png) 懂了不~这样就把整个列表分成了四组,自动去求每一个数据该分到哪一组,所以才会有上图这样每组数量还不一样的情况出现。但是不论你数据量是多少,永远给你分成四组。 ![](http://www.rhinostudio.cn/files/course/2019/03-09/11432191b037321928.png) 所以,拓展一下,如果你改成ceiling(x)会怎么样? ![](http://www.rhinostudio.cn/files/course/2019/03-09/114710e1ee79364230.png) 那,如果是四舍五入的round(x)呢?不过比较尴尬的是没有输入端,如果我想改组数我还得双击进来改,而不能和slider等运算器联动。 ![](http://www.rhinostudio.cn/files/course/2019/03-09/114757d410fa923971.png) 所以,path mapper是一个自由度很大的数据结构处理运算器。再比如把所有B级路径=2的数据支分到一组,其余的分到另一组: ![](http://www.rhinostudio.cn/files/course/2019/03-09/121455fdee0a542928.png) 再比如,讲数据结构两两合并 ![](http://www.rhinostudio.cn/files/course/2019/03-09/130901dab5f4516102.png) 再比如,讲列表中的数据两两分组,作用上等于Partition List。 ![](http://www.rhinostudio.cn/files/course/2019/03-09/131215f40f86943794.png) 再比如,讲数据结构按照奇偶的路径分成两组数据。 ![](http://www.rhinostudio.cn/files/course/2019/03-09/15095428ee0a504086.png) 翻转数据结构: 诸如此类,用法其实很多,完全看你需要,单单这一个运算器我们就已经说的足够多了,虽然即便如此还没有全部囊括,有时间遇到了再补充吧, 不过好处是,大部分情况下,你都不会遇到这么复杂的数据处理的情况,但是这个东西对于帮助你理解数据结构来说还是很有用的。 * * *