访问scala中的特定列

时间:2013-11-25 20:24:30

标签: list scala

我有一个list列表(类型为int),我需要返回第一/第二列等,具体取决于作为列索引给出的输入。有关如何访问该特定列的每一行项目的任何想法?我试过了,但我所有人都使用了地图功能,但我不知道它是如何工作的。提前致谢

3 个答案:

答案 0 :(得分:0)

列表类型可以通过索引号

访问
scala> val a=List(1,3,5,7,11,13);
a: List[Int] = List(1, 3, 5, 7, 11, 13)

scala> a(1)
res0: Int = 3

scala> a(2)
res1: Int = 5

多维列表也可以使用

scala> val a=List(List(1,3,5,7,11,13), List(2,4,6,8,10,12));
a: List[List[Int]] = List(List(1, 3, 5, 7, 11, 13), List(2, 4, 6, 8, 10, 12))

scala> a
res2: List[List[Int]] = List(List(1, 3, 5, 7, 11, 13), List(2, 4, 6, 8, 10, 12))

scala> a(1)
res3: List[Int] = List(2, 4, 6, 8, 10, 12)

scala> a(1)(2)
res4: Int = 6

更新以回答您的评论,该功能采用Ints列表和列号

scala> val a=List(List(1,3,5,7,11,13), List(2,4,6,8,10,12), List(0,10,20,30,40,50,60));
a: List[List[Int]] = List(List(1, 3, 5, 7, 11, 13), List(2, 4, 6, 8, 10, 12), List(0, 10, 20, 30, 40, 50, 60))
   scala> def getcol(l: List[List[Int]], n: Int) = (for (i <- l) yield i(n)).toList 
getcol: (l: List[List[Int]], n: Int)List[Int]

scala> getcol(a,0)
res17: List[Int] = List(1, 2, 0)

scala> getcol(a,1)
res18: List[Int] = List(3, 4, 10)

答案 1 :(得分:0)

一个选项:

def getColumn[T](list: List[List[T]], column: Int): List[T] = {
  list.map(row => row(column))
}

然后:

scala> val l = List(List(1, 2, 3), List(4, 5, 6), List(7, 8, 9))
l: List[List[Int]] = List(List(1, 2, 3), List(4, 5, 6), List(7, 8, 9))

scala> getColumn(l, 2)
res0: List[Int] = List(3, 6, 9)

答案 2 :(得分:0)

val nums = List(List(1,2,3),List(4,5,6))
nums map(_(1))  // gives List(2,5)

或者使用colIndex参数的方法:

def sliceCol[T](ls: List[List[T]], colIndex: Int): List[T] =
  ls map(_(colIndex))

sliceCols(1)  // same result