prolog - 如何在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"]
推荐阅读
- r - 将函数的答案存储到 R 中的向量中
- ios - Alamofire 发布图像上传请求,在 swift 中给出状态代码 - 400
- android - 你如何告诉android中的ktlint排除项目中的特定路径?
- java - 我想添加另一行,但它具有相同的变量但不同的参数
- powerbi - 基于平均值的动态分类
- outlook - 如何在 Outlook 电子邮件中使用自定义字体
- node.js - 检测代码是否使用 NodeJS 特定的全局对象,浏览器中可能不存在什么
- botframework - 如何在 PVA 中访问 Bot Framework Composer 对话框变量
- python-3.x - 如何迭代列表列表并仅使用列表理解更新列表中的元素
- java - 确保java线程真的被挂起