Как вы возвращаете оставшиеся элементы списка после n-й позиции в Racket? - PullRequest
1 голос
/ 07 апреля 2020

Я понимаю, что функция take может возвращать первые n элементов списка, но есть ли функция, которая возвращает оставшиеся элементы? Например: если у меня есть список '(1 2 3 4 5), и я хочу вернуть новый список с элементами после 3-й позиции, это приведет к результату' (4 5).

1 Ответ

1 голос
/ 07 апреля 2020

Требуется функция 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)
...