Я ищу способ создать последовательность, состоящую из каждого n-го элемента другой последовательности, но, похоже, не нашел способа сделать это элегантным способом.Я, конечно, могу что-то взломать, но мне интересно, есть ли библиотечная функция, которую я не вижу.
Функции последовательности, имена которых оканчиваются на -i, кажутся вполне подходящими для выяснения, когдаэлемент - это n-й или (кратный n) -й элемент, но я вижу только iteri
и mapi
, ни один из которых на самом деле не подходит для задачи.
Пример:
let someseq = [1;2;3;4;5;6]
let partial = Seq.magicfunction 3 someseq
Тогда partial
должно быть [3;6]
.Есть ли что-нибудь подобное?
Редактировать:
Если я не настолько амбициозен и допускаю, чтобы n
был постоянным / известным, тогда ятолько что обнаружил, что должно работать следующее:
let rec thirds lst =
match lst with
| _::_::x::t -> x::thirds t // corrected after Tomas' comment
| _ -> []
Есть ли способ написать это короче?