首页 > 解决方案 > 如何在 Racket 中的第 n 个位置之后返回列表的剩余元素?

问题描述

我知道 take 函数可以返回列表的前 n 个元素,但是有没有返回剩余元素的函数?例如:如果我有一个列表 '(1 2 3 4 5) 并且我想返回一个新列表,其中包含第三个位置之后的元素,那么最终的结果将是 '(4 5)。

标签: listracket

解决方案


你想要这个drop功能。take并且drop是免费的,以便在 .(drop lst n)中的元素之后生成列表的其余部分(take lst n)

例子:

> (take (list 1 2 3 4 5) 3)
(list 1 2 3)
> (drop (list 1 2 3 4 5) 3)
(list 4 5)

drop函数也可以list-tail在某些库中调用。

> (list-tail (list 1 2 3 4 5) 3)
(list 4 5)

旁注:split-at如果您希望从一次计算中同时返回两者,则该函数会同时返回两者。

> (split-at (list 1 2 3 4 5) 3)
(list 1 2 3)
(list 4 5)

推荐阅读