在scala中保持列表中元素的轨迹

时间:2013-11-28 19:59:53

标签: list scala

假设您获得以下列表:{1,0,0,3,4,0,8,0,5,6,0}。有什么办法可以为SCALA列表中的所有0分配一个特定的索引吗?然后必须将此索引用作另一个函数的参数。

1 个答案:

答案 0 :(得分:3)

不完全确定你的意思,但也许这会给你一些想法:

scala> val list = List(3, 4, 0, 0, 3, 0, 2)
list: List[Int] = List(3, 4, 0, 0, 3, 0, 2)

scala> val indexed = list.zipWithIndex
indexed: List[(Int, Int)] = List((3,0), (4,1), (0,2), (0,3), (3,4), (0,5), (2,6))

scala> val zeroIndices = indexed collect { case (value, index) if value == 0 => index }
zeroIndices: List[Int] = List(2, 3, 5)

加成:

scala> zeroIndices map list
res1: List[Int] = List(0, 0, 0)