Как мне сделать удаление данного элемента из списка? В качестве примера, скажем, у меня есть список ['A'; 'B'; 'C'; 'D'; 'E']
и вы хотите удалить элемент в индексе 2, чтобы создать список ['A'; 'B'; 'D'; 'E']
? Я уже написал следующий код, который выполняет задачу, но мне кажется неэффективным прохождение начала списка, когда я уже знаю индекс.
let remove lst i =
let rec remove lst lst' =
match lst with
| [] -> lst'
| h::t -> if List.length lst = i then
lst' @ t
else
remove t (lst' @ [h])
remove lst []
let myList = ['A'; 'B'; 'C'; 'D'; 'E']
let newList = remove myList 2
В качестве альтернативы, как мне вставить элемент в заданную позицию? Мой код аналогичен приведенному выше подходу и, скорее всего, неэффективен.
let insert lst i x =
let rec insert lst lst' =
match lst with
| [] -> lst'
| h::t -> if List.length lst = i then
lst' @ [x] @ lst
else
insert t (lst' @ [h])
insert lst []
let myList = ['A'; 'B'; 'D'; 'E']
let newList = insert myList 2 'C'