在列表中添加元素的Prolog
问题描述:
我想提取从列表元素,并将它们添加到另一个新list.How我能做到这 -在列表中添加元素的Prolog
L=[['abc',18],['bcd',19],['def',20]],
nth1(Count,L,List1),
nth1(2,List1,Value),
**NOW I WANT TO PUT THIS Valie in another new list.So finally new list will have
New=[18,19,20]**
我怎么可能保持在一个新的列表中添加元素呢? ?
答
看到findall/3和朋友
?- L=[['abc',18],['bcd',19],['def',20]], findall(E,member([_,E],L), R).
L = [[abc, 18], [bcd, 19], [def, 20]],
R = [18, 19, 20].
答
同样可以用MAPLIST来实现:
?- maplist(nth1(2), [['abc',18],['bcd',19],['def',20]], R).
R = [18, 19, 20].
是nth/3
巧合的参数顺序?
答
假设你的老师希望你对自己的工作进行递归的解决方案,你可以简单地说是这样的(假设您的示例数据):
slurp([] , [] ) .
slurp([[_,X]|Xs] , [X|Ys]) :- slurp(Xs,Ys) .
这是不一样的,它的更好;与变量一起工作;确保我们有清单。想想'[[abc,18] | nonlist]' – false 2014-11-25 11:40:15
参数顺序:它与'arg/3'相同。 – false 2014-11-25 11:59:46