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

How can I get multiple nth elements in a list?

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

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

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

map (a !!) [0,1,2,3]

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

<strong>take 4</strong> a

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