说我有一个列表val list = List(34, 11, 98, 56, 43).
现在如何找到列表中最小元素的索引(例如,在这种情况下为1)?
答案 0 :(得分:24)
在Scala 2.8上:
List(34, 11, 98, 56, 43).zipWithIndex.min._2
答案 1 :(得分:6)
空列表没有最小值。只有一个元素的列表将该元素作为其最小值。对于所有其他列表,最小值是该列表的第一个元素或列表其余部分的最小值,具体取决于哪个更大。
所以要找到索引,这就变成:对于长度为1的列表,最小值的索引为0.如果列表中有多个元素且尾部的最小值大于头部,则它也为0。头部大于指数是尾部最小值加一的指数。
答案 2 :(得分:6)
我认为最简单的方法是list.indexOf(list.min)
。当列表为空时它会抛出异常,但丹尼尔的回答也是如此。
答案 3 :(得分:2)
从{
"selector": "edge.specialSnowflake",
"style": {
"display": "none"
}
}
开始,一个稍微安全些的解决方案(处理空列表)将包括使用minOption
/ Scala 2.13
,如果序列为空,则返回maxOption
:>
None
这样,当列表为空时,您还可以决定使用默认值:
List(34, 11, 98, 56, 43).zipWithIndex.minOption.map(_._2)
// Option[Int] = Some(1)
List[Int]().zipWithIndex.minOption.map(_._2)
// Option[Int] = None