使用内置函数nth0/4
(使用基于 0 的索引)或nth1/4
(使用基于 0 的索引)来执行此操作。在您的情况下,由于您使用基于 1 的索引,nth1
因此应该使用:
nth1(Index, List, _, Remainder)
提供Index
and List
,因为你不需要被删除的元素,你可以忽略它,那么结果列表将在Remainder
.
nth1
这是从 SWI-Prolog中的库中获取的源代码lists.pl
,重写以消除依赖关系:
% Case 1: Index not specified
nth1(Index, In, Element, Rest) :-
var(Index), !,
generate_nth(1, Index, In, Element, Rest).
% Case 2: Index is specified
nth1(Index, In, Element, Rest) :-
integer(Index), Index > 0,
find_nth1(Index, In, Element, Rest).
generate_nth(I, I, [Head|Rest], Head, Rest).
generate_nth(I, IN, [H|List], El, [H|Rest]) :-
I1 is I+1,
generate_nth(I1, IN, List, El, Rest).
find_nth1(1, [Head|Rest], Head, Rest) :- !.
find_nth1(N, [Head|Rest0], Elem, [Head|Rest]) :-
M is N-1,
find_nth1(M, Rest0, Elem, Rest).