0

我想知道是否有办法找出列表位置 x 在函数中的位置?

hep list = [if x=="you" then "u" else if x=="are" then "r" else x | x <- list]

就像是:

hep list = [if x=="by" && elemAt(x+1)=="the" && elemAt(x+2)=="way" then "btw" else if x=="are" then "r" else x | x <- list]
4

3 回答 3

5

您可能不想以这种方式解决您的问题(索引到链表是一种算法气味等等),但如果您真的需要索引,您可以通过压缩索引列表来获得它们:

zip [0..] some_list

然后,当您遍历这个新列表时,您将获得对而不是单个元素。每对的第一个元素将是您想要的索引,第二个元素将是项目。

或者你可能在问你用什么函数去另一种方式(在某个索引处获取元素)?为此,您使用!!

some_list !! 5
于 2013-02-10T22:22:42.357 回答
2

您可以通过使用 压缩给定列表来获取索引[0..],但是按索引访问列表项既不是惯用的方式,也不是执行您想做的事情的有效方式。

更好的解决方案是使用递归和模式匹配来遍历列表,一次获取多个元素。

于 2013-02-10T22:24:15.063 回答
1

要扩展 sepp2k 的答案,您可以尝试以下操作:

hep ("by" : "the" : "way" : rest) = "btw" : hep rest
hep ("are" : rest)                = "r"   : hep rest
hep (yadda : rest)                = yadda : hep rest
hep []                            = []
于 2013-02-10T22:36:06.440 回答