如何return包含Prolog中某个元素的列表?
How to return the list that contains a certain element in Prolog?
我正在学习序言,但我遇到了代码问题。我想检查一个元素是否存在于列表列表中,如果存在我想获取包含该元素的列表来操作列表。我做了一个子句来证明该元素是否在列表列表中,但我不知道如何获取该列表,请帮助我。
memberlist(X,[H|_]) :-
member(X,H).
memberlist(X,[_|T2]) :-
memberlist(X,T2).
我做这个查询:
memberlist("product1",[["product2", 100, "available"],["product3", 100, "sold out"],["product1", 200, "available"]]).
我得到:true
但我还想得到包含字符串 "product1"
的列表,所以我要查找的结果是:["product1", 200, "available"]
引入第三个参数来存储匹配列表如何?例如:
memberlist(X,[H|_],H) :-
member(X,H).
memberlist(X,[_|T2],Y) :-
memberlist(X,T2,Y).
示例查询:
memberlist("product1", [["product2", 100, "available"],["product3", 100, "sold out"],["product1", 200, "available"]], Result).
产生结果:
Result = ["product1", 200, "available"]
我正在学习序言,但我遇到了代码问题。我想检查一个元素是否存在于列表列表中,如果存在我想获取包含该元素的列表来操作列表。我做了一个子句来证明该元素是否在列表列表中,但我不知道如何获取该列表,请帮助我。
memberlist(X,[H|_]) :-
member(X,H).
memberlist(X,[_|T2]) :-
memberlist(X,T2).
我做这个查询:
memberlist("product1",[["product2", 100, "available"],["product3", 100, "sold out"],["product1", 200, "available"]]).
我得到:true
但我还想得到包含字符串 "product1"
的列表,所以我要查找的结果是:["product1", 200, "available"]
引入第三个参数来存储匹配列表如何?例如:
memberlist(X,[H|_],H) :-
member(X,H).
memberlist(X,[_|T2],Y) :-
memberlist(X,T2,Y).
示例查询:
memberlist("product1", [["product2", 100, "available"],["product3", 100, "sold out"],["product1", 200, "available"]], Result).
产生结果:
Result = ["product1", 200, "available"]