如何获取列表中的多个第 n 个元素?

Amb*_*ber 1 haskell list

我想知道如何在一个函数中获取列表中的多个元素

例如,如果我想从 list 中获取元素 1 2 3 和 4 a,我就必须输入a!!0 ++ a!!1 ++ a!!2 ++ a!!3. 这会占用大量空间,尤其是当列表名称超过一个字符时。所以我想知道我是否可以做类似的事情a!![0,1,2,3]并以更短的方式获取所有这些元素。谢谢。

Wil*_*sem 5

您可以使用映射来查找列表中的所有项目,因此:

map (a !!) [0,1,2,3]
Run Code Online (Sandbox Code Playgroud)

但是,如果您对前四项感兴趣,您可以使用take :: Int -> [a] -> [a]

take 4 a
Run Code Online (Sandbox Code Playgroud)

特别是因为通过索引查找(with (!!))在 Haskell 中不是常见操作:这是不安全的,因为不能保证索引在边界内。大多数列表处理是通过takedropsumfoldr等函数完成的。