如何从列表中获取最大数及其索引?

我试图从我的列表中找到最大的数字以及它的索引。例如,这是我的清单:

list = [4.3,0.0,6.2214,9.1,1.023990433763,3.839]

我可以用这一行找到最大的数字:

greatest = maximum list

在这个例子中,最大的数字是 9.1,但是我如何显示它的索引(在这个例子中是 3)?

回答

最简单的方法是使用索引显式注释列表,然后在那里进行搜索。

Prelude> zip [4.3,0.0,6.2214,9.1,1.023990433763,3.839] [0..]
[(4.3,0),(0.0,1),(6.2214,2),(9.1,3),(1.023990433763,4),(3.839,5)]

因为元组按Ord字典顺序maximum排列,您实际上可以简单地在该列表上使用:

Prelude> maximum $ zip [4.3,0.0,6.2214,9.1,1.023990433763,3.839] [0..]
(9.1,3)

不过,这有点骇人听闻,因为您至少原则上还可以对索引进行比较,而这并不是您真正想要的。所以更清洁的方法是

> :m +Data.List Data.Ord
> maximumBy (comparing fst) $ zip [4.3,0.0,6.2214,9.1,1.023990433763,3.839] [0..]
(9.1,3)

当然,如果最后你想要索引,你可以很容易地扔掉这个值:

> snd . maximumBy (comparing fst) $ zip [4.3,0.0,6.2214,9.1,1.023990433763,3.839] [0..]
3


以上是如何从列表中获取最大数及其索引?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>