我有一个列表[2 / 4 ,3 / 6 ,1 / 2 ,7 / 5 ]我想创建一个仅包含第二个数字的列表[ 4 , 6 , 2 , 5 ]。
我在想这样的事情:
newlist(L,L2):-
newlist(L,A/B),
newlist(A/B,B),
newlist(B,L2).
那没用,有什么建议吗?
答案 0 :(得分:3)
为单个元素定义谓词:
pair_to_2nd(_/B, B).
现在将此谓词应用于列表:
?- maplist(pair_to_2nd, [2/4, 3/6, 1/2, 7/5], L).
L = [4, 6, 2, 5].
答案 1 :(得分:3)
listDenom([ ],[ ]).
listDenom([_/D|T],[D|V]) :- listDenom(T,V).
答案 2 :(得分:-4)
以下是使用string_to_list
的解决方案。
splitList(A) :-
string_to_list(A, [_,_,_,A1,_,_,_,B1,_,_,_,C1,_,_,_,D1,_]),
string_to_list(A2, [A1]),
string_to_list(B2, [B1]),
string_to_list(C2, [C1]),
string_to_list(D2, [D1]),
write([A2,B2,C2,D2]).
示例:强>
?- splitList('[2/4,3/6,1/2,7/5]').
[4,6,2,5]
true.