list - 在 Haskell 的列表中查找元素的索引?

标签 list haskell indexing

我在 Haskell 中有一个函数从列表中找到幂的最大值:

prob99 = maximum $ map (\xs -> (head xs)^(head (tail xs))) numbers

我需要找到的是这个最大值在结果列表中的位置。我该怎么办?

编辑:我找到了一个这样的解决方案:
n = [[519432,525806],[632382,518061]....
prob99b [a,b] = b* (log a)
answer = snd $ maximum (zip  (map prob99b n) [1..])

最佳答案

如何找到最大元素的索引?尝试所有索引并检查它们是否为最大值怎么样?

ghci> let maxIndex xs = head $ filter ((== maximum xs) . (xs !!)) [0..]

但这听起来像是已经存在函数的东西。如果我使用现有函数,我的代码将更具可读性、可维护性,甚至可能更高效。

仅供引用,您也可以问Hoogle可以搜索的
通过 Haskell 类型签名(如 Will 建议的那样):

$ hoogle "Ord a => [a] -> Int" | head

<Nothing relevant>

$ # hmm, so no function to give me the index of maximum outright,
$ # but how about finding a specific element, and I give it the maximum?
$ hoogle "a -> [a] -> Int" | head
Data.List elemIndex :: Eq a => a -> [a] -> Maybe Int
Data.List elemIndices :: Eq a => a -> [a] -> [Int]

关于list - 在 Haskell 的列表中查找元素的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1496980/

相关文章:

r - 列表数据框类上匹配日期的百分比计算

scala - 功能设计模式

mysql - 如何从存储过程创建索引或在 MySQL 中的每个表上创建索引?

javascript - 如何为 node.js 中的 MongoDB 索引指定 javascript 对象中的属性顺序?

python - 解决 Whoosh 索引错误 : Writer is closed

python - 在 Python 中向列表添加额外元素的有效方法

java - 如何删除列表中的一堆对象

list - F#函数查找列表的所有旋转

haskell - 如何在 Haskell 中添加/减去绝对值和相对值的运算符

haskell - 参数类型类名