我想知道是否有办法找出列表位置 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]
我想知道是否有办法找出列表位置 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]
您可能不想以这种方式解决您的问题(索引到链表是一种算法气味等等),但如果您真的需要索引,您可以通过压缩索引列表来获得它们:
zip [0..] some_list
然后,当您遍历这个新列表时,您将获得对而不是单个元素。每对的第一个元素将是您想要的索引,第二个元素将是项目。
或者你可能在问你用什么函数去另一种方式(在某个索引处获取元素)?为此,您使用!!
:
some_list !! 5
您可以通过使用 压缩给定列表来获取索引[0..]
,但是按索引访问列表项既不是惯用的方式,也不是执行您想做的事情的有效方式。
更好的解决方案是使用递归和模式匹配来遍历列表,一次获取多个元素。
要扩展 sepp2k 的答案,您可以尝试以下操作:
hep ("by" : "the" : "way" : rest) = "btw" : hep rest
hep ("are" : rest) = "r" : hep rest
hep (yadda : rest) = yadda : hep rest
hep [] = []