zoukankan      html  css  js  c++  java
  • 用Scala实现集合中相邻元素间的差值

    欢迎转载,转载请注明出处,徽沪一郎。

    概要

    代码这东西,不写肯定不行,新学Scala不久,将实际遇到的一些问题记录下来,日后也好查找。

    今天讲的是如何计算同一集合中元素两两之间的差值,即求开始集合(a,b,c,d)中(b-a,c-b,d-c)

    解法

    val l1 = 1 to 10 toList
    val l2 = l1.tail
    l1.zip(l2).map(p=>(p._2 - p._1)
    
    

    上述代码即可求出两两差值。代码含义稍作解释:

    1. tail表示一个集合中除首元素外的剩余元素,也是一个集合。
    2. zip将两个集合组成一个数值对集合,比如原来有两个集合分别是(a,b,c,d), (1,2,3,4),使用zip之后,形成((a,1),(b,2),(c,3),(d,4))
    3. map操作中的p._1和p._1表示tuple中的第一个元素和第二个元素

    衍生

    既然讲了首元素和剩余元素,肯定要讲到其对立面。分别引述如下

    • head|tail  head表示头元素,tail表示除head之外的剩余元素集合
    • init|last    last表示尾元素, init表示除尾元素之外的剩余元素集合
  • 相关阅读:
    青城的另一个一夜/情
    SystemProperties.get/set property_get/set
    锁——Java同步的基本思想
    CMUSphinx Learn
    猜数字
    我的音乐我的电影
    动态规划_钢条切割问题
    directdraw显示yuv420(YV12)
    Redis 命令参考
    HDU 3078 LCA转RMQ
  • 原文地址:https://www.cnblogs.com/hseagle/p/4199563.html
Copyright © 2011-2022 走看看