列出添加元素(和拆分)

时间:2012-08-12 16:27:03

标签: list

我正在添加一个列表,当我使用MyArray|MyElement时,我打印到屏幕上,我得到:

  

[obj1,obj2] | OBJ3

哪个不对,是吗?理想情况下,我希望它是:

  

[OBJ1,OBJ2,OBJ3]

如果我使用MyArray|[MyElement]打印输出给我:

  

[Obj1,Obj2] | [OBJ3]

这相当于[Obj1,Obj2,Obj3]?

3 个答案:

答案 0 :(得分:2)

使用语法[ MyElement | MyArray ],您将获得

[Obj3, Obj1, Obj2]

这就是所谓" consing"列表中的元素。您还可以使用append/3谓词,如下所示:

append( MyArray, [MyElement], X).

产生

X = [Obj1, Obj2, Obj3]

答案 1 :(得分:1)

想出来,因为我追加到列表的末尾,尾巴总是一个数组....

答案 2 :(得分:0)

我不知道我是否理解你的问题,但我会尽力帮助。

如果适合您,请尝试此操作:

add2end(X,[],[X]).
add2end(X,[H|T],[H|NewT]):-add2end(X,T,NewT).

分裂:

split(L,N,L1,L2): - 列表L1包含前N个元素  在列表L中,列表L2包含剩余的元素。 (列表,整数,列表,列表)(?,+,?,?)

split(L,0,[],L).
split([X|Xs],N,[X|Ys],Zs) :- N > 0, N1 is N - 1, split(Xs,N1,Ys,Zs).