list - 判断给定元素是否在 double 列表中

标签 list prolog tuples

我有一个 double 列表,格式为A = [[1,2],[2,3],[3,4],[5,5]]

我想做的是创建一个函数,如果一个数字是任何 double 中的第一个数字,该函数将返回 true。因此,somefunction(7,A) 将返回 false,而 somefunction(5,A) 将返回 true。

我已经尝试过这个 somefunction(A,B) :- A == (B,_) 但这没有任何用处。

最佳答案

成员([N,_],As)。

但是这里有两点说明:

首先,您真的想要像 [[1,2],[3,4]] 这样的列表吗?如果您始终只有两个元素,请考虑使用对。即,使用仿函数 (-)/2。它通常被写成Key-Value。因此,您可以编写[1-2,3-4]。常用的列表是pair列表,有keysort/2,它只根据Key排序。

其次,“名称查找”的常见习语如下:

..., P = (Name-Value), member(P, Dict), ...

这里值得注意的是,我们不需要对列表或我们拥有的任何其他元素使用“特殊”成员谓词。我们现在可以“按名称”或“按值”或两者搜索或不搜索...

关于list - 判断给定元素是否在 double 列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10012749/

相关文章:

python - 在列表中查找项目和重复项

prolog - SICStus Prolog JIT 编译器

list - 如何获得列表的反向对?

python - 将元组列表更改为字典(pythonic 方式)

list - Haskell中两个列表的所有元素组合

python - 按数值排序字典

python - 我的 for 循环出了什么问题? Python

python - 将字典字典转换为字典列表

Prolog 谓词 - 无限循环