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