美文网首页
有序集合间的对位运算

有序集合间的对位运算

作者: 小黄鸭呀 | 来源:发表于2020-10-12 10:27 被阅读0次

    有序集合间的对位运算,包括比较运算(>,<, 等于)和四则运算(+,-,*,/,%,\)。本问中讨论的集合,都是有序集合,有序集合的成员是有次序的。有序集合间的对位运算,会按照顺序使用对位成员进行比较或者四则运算。

    1. 比较两个集合的大小

    集合可以使用符号 ">" 或 "<" 比较大小,从第一个成员开始按照顺序比较对位成员。例如 [1,3,1] 与[1,2,2]比较大小时,首先比较各自的第一个成员,1 与 1 相等;继续比较各自的第二个成员,因为 3>2,所以 [1,3,1] 大于[1,2,2],无需比较后面的成员了。

    【例 1】 以奥运会奖牌榜为例,查询哪几届奥运会中国奖牌榜排名比俄罗斯靠前。部分数据如下:

    奥运奖牌榜的规则是:首先对比金牌数量,金牌数高的排名靠前,金牌数低的排名靠后,金牌数相同的将会按照银牌数再次对比排名。银牌数高的排名靠前,银牌数低的排名靠后,银牌数相同的将会按照铜牌数再次对比排名。以此类推,铜牌数也相同的国家排名并列。

    【SPL 脚本】

    A5的执行结果如下:

    2. 比较两个集合是否相等

    比较两个集合是否相等是很常见的需求,比如比较文件内容是否相同,比较数据表的数值是否发生变化等。例如比较集合 [1,2,3] 和[2,1,3]是否相等。通常来说,集合的的对位成员不完全一致,认为两个集合是不相等的。但是也有时候并不在意集合的成员顺序,只需要比较两个集合是否包含了同样的成员。

    【例 2】 下面是随机抽样后生成的文件,比较两次随机抽样是否选出了相同的序号。部分数据如下:

    【SPL 脚本】

    A3的执行结果如下:

    结果为 0 表示两个文件 ID 完全一致。

        如果 ID 的顺序可能不同,可以使用函数 eq() 比较两个集合的成员是否相同:

    3. 集合成员的对位计算

    集合成员的对位计算,支持 +,-,*,/,%,\ 等四则运算。例如 3 天内 A 商店的销售额集合是 [2,3,4],B 商店的销售额集合是 [3,1,3],我们希望得到两个商店的销售额之和的集合 [5,4,7]。

    【例 3】 求 2019 年 12 月 24 日到 26 日深证 300 (399007) 对深证成指 (399001) 的每日相对收益率。部分数据如下:

    【SPL脚本】

    A4的执行结果如下:

    SPL CookBook》中还有更多相关计算示例。

    相关文章

      网友评论

          本文标题:有序集合间的对位运算

          本文链接:https://www.haomeiwen.com/subject/nadupktx.html