如何在Scala中的List中找到最大值的索引?

Phi*_*hil 21 indexing scala max scala-collections

对于Scala List [Int],我可以调用max方法来查找最大元素值.

如何找到最大元素的索引?

这就是我现在正在做的事情:

val max = list.max 
val index = list.indexOf(max)
Run Code Online (Sandbox Code Playgroud)

Tra*_*own 39

一种方法是使用索引压缩列表,找到具有最大第一个元素的结果对,并返回该对的第二个元素:

scala> List(0, 43, 1, 34, 10).zipWithIndex.maxBy(_._1)._2
res0: Int = 1
Run Code Online (Sandbox Code Playgroud)

这不是解决问题的最有效方法,但它是惯用且清晰的.


小智 12

由于Seq是Scala中的函数,以下代码有效:

list.indices.maxBy(list)
Run Code Online (Sandbox Code Playgroud)