如何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"]