haskell - 我如何操纵列表理解?

标签 haskell list-comprehension

第一次发帖,如果有什么地方做错了或者不清楚我的问题,请见谅

我对 Haskell 还很陌生,我很难弄清楚如何操纵列表理解来向我展示我想要的东西。我有两个函数可以给我元组列表(它们基本上是矩阵,其中一个是完整的,另一个是随机的)

我想使用列表理解创建一个新列表(矩阵),它将返回 list2 元组是否与 list1 元组相同。

例如:

list1 = [(0,0),(0,1),(0,2),(1,0),(1,1),(1,2),(2,0),(2,1),(2,2)]
list2 = [(1,0),(1,1)]
result = [False, False, False, True, True, False, False, False, False]

但是我写的列表理解给了我一个笛卡尔积

[False,False,False,True,False,False,False,False,False,False,False,False,False,True,False,False,False,False]

即使在 List1 中找到相同的元组,列表推导式仍会继续比较 List2 中的元组。

这就是我编写列表理解的方式:

[ (x==y) | x <- (list2), y <- (list1)]

我很确定必须有某种谓词可以在列表理解中编写以获得我想要的东西,但我不知道如何实现这一点。

最佳答案

这是电子成员(member)资格检查,因此您可以将其实现为:

[ x `elem` list2 | x <- list1 ]

但更简单的方法可能是使用 map :: (a -> b) -> [a] -> [b] :

map (`elem` list2) list1

关于haskell - 我如何操纵列表理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72381873/

相关文章:

Haskell 读取原始键盘输入

haskell - 格雷特函数定义

python - 如何在列表理解中包含计数条件?

python - 如何在过滤掉某些值的同时对列表列表进行排序?

python - 如何在 python 中使用列表理解修改列表列表中的特定项目

regex - Haskell 的 Text.Regex.subRegex 使用 TDFA 实现?

haskell - 来自同一域的函数的应用实例到 Applicative

haskell - 如何制作偏函数?

python - 在Python中维护集合或列表理解中的序列类型

erlang - 来自 Erlang 列表理解的意外空列表