我希望能够在某个元素中将列表拆分为两个。例如,{
"took": 22,
"timed_out": false,
"_shards": {
"total": 6,
"successful": 6,
"skipped": 0,
"failed": 0
},
"aggregations": {
"significant_tags": {
"doc_count": 2945,
"bg_count": 2945,
"buckets": []
}
}
}
应该为我split_at(c, [a,b,c,d,e], Left, Right)
和Left = [a,b]
。目前,即使我在跟踪中看到Right = [c,d,e]
和Left
,我的代码也没有给我任何结果。有人可以指出错误吗?
Right
答案 0 :(得分:1)
假设您指的是第一次出现指定元素时的拆分(而不是列表中的第3个项目):
split_left_right_list(Split,[],[Split|Rest],[Split|Rest]).
split_left_right_list(S,LR,R,[First|Rest]):-
dif(First,S),
split_left_right_list_ac(S,L,R,Rest,[First]),
reverse(L,LR).
split_left_right_list_ac(_,AC,[],[],AC).
split_left_right_list_ac(S,AC,[S|Rest],[S|Rest],AC).
split_left_right_list_ac(S,L,R,[Not|Rest],AC):-
dif(Not,S),
split_left_right_list_ac(S,L,R,Rest,[Not|AC]).
答案 1 :(得分:1)
split_at(Elem,List,Left,Right) :-
append(Left,[Elem|Rest],List), Right = [Elem|Rest].