如何从列表中删除零值?

How can I remove zero values from list?

如何在连接两个列表后从结果列表中删除零值?

这是我为合并 2 个列表而编写的代码,但我不知道如何从结果列表中删除零。

代码:

merge([], [], _).
merge([H1|T1], [H2|T2], [H2|T]) :-
    H1 > H2,
    merge([H1|T1], T2, T),
    !.
merge([H1|T1], [H2|T2], [H1|T]) :-
    H1 =< H2,
    merge(T1, [H2|T2], T), 
    !.
merge([], [H2|T2], T) :-
    append([], [H2|T2], T).
merge([H1|T1], [], T) :-
    append([], [H1|T1], T).

以下代码将带零的列表作为第一个参数,将不带零的列表作为第二个参数。它通过剥离第一个列表的头部来工作:如果它是零,则第二个列表不需要它。当你点击空字符串时,你就完成了。序言现在将回溯并建立第二个列表。

delete([],[]). delete([0|T], L) :- delete(T, L). delete([H|T], [H|T2]) :- delete(T, T2).

还没有测试过,但我很确定它应该会给你

?- delete([1,2,0,3,4,0,5],0,R). R = [1, 2, 3, 4, 5].