List 列出添加元素(和拆分)

List 列出添加元素(和拆分),list,List,我正在添加一个列表,当我使用MyArray | MyElement时,我打印到屏幕上,得到: [obj1,obj2]| obj3 哪个不正确,是吗?理想情况下,我希望它是: [Obj1、Obj2、Obj3] 如果我使用MyArray |[MyElement]打印出来会给我: [Obj1,Obj2]|[Obj3] 这是否等同于[Obj1,Obj2,Obj3]?解决了这个问题,这是因为我在列表末尾添加了一个后缀,而尾部始终是一个数组 使用语法[MyElement | MyArray],您将得到 [O

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

[obj1,obj2]| obj3

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

[Obj1、Obj2、Obj3]

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

[Obj1,Obj2]|[Obj3]


这是否等同于[Obj1,Obj2,Obj3]?

解决了这个问题,这是因为我在列表末尾添加了一个后缀,而尾部始终是一个数组

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

[Obj3, Obj1, Obj2]
这就是所谓的“考虑”列表中的元素。您还可以使用
append/3
谓词,如下所示:

append( MyArray, [MyElement], X).
产生

X = [Obj1, Obj2, Obj3]

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

如果适合您,请尝试以下方法:

add2end(X,[],[X]).
add2end(X,[H|T],[H|NewT]):-add2end(X,T,NewT).
对于拆分:

拆分(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).