list - 如何从haskell中的列表中排除特定的元组
问题描述
我对如何在下面的代码中从该列表中过滤掉元素 (1,1) 感到非常困惑。
take 10 [ (i,j) | i <- [1,2],
j <- [1..] ]
yields
[(1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(1,8),(1,9),(1,10)]
我的想法是使用过滤器之类的东西,但我不太确定在哪里实现它。
我去的是Filter ((i,j) /=0) "the list"
谢谢
解决方案
作为 using 的替代方法filter
,您还可以通过添加保护表达式来指定您不希望(1,1)
作为列表理解中的元素(i,j) /= (1,1)
:
take 10 [ (i,j) | i <- [1,2], j <- [1..], (i,j) /= (1,1) ]
这类似于您如何编写集合推导(列表推导模仿):
这个答案[x | i <- [0..10], let x = i*i, x > 20]
给出了一个很好的例子(
- 发电机,例如。
i <- [0..10]
提供价值观的来源。 - 守卫,例如。
x > 20
是任意谓词 - 对于来自生成器的任何给定值,只有在所有谓词都成立时,该值才会包含在结果中。 - 本地声明,例如。执行与正常/语句
let x = i*i
相同的任务。let
where
取自语法参考expression的不同表达式的名称qual
。
推荐阅读
- r - 编写一个 R 函数来查找余弦相似度
- c - 如何在 C 中检查 scanf 中的额外输入?
- reactjs - 如何在 reactjs 中破坏这个对象和映射?
- python - Discord Python 机器人的嵌入
- jquery - 如何更快更好地使用 jquery 对表 tr 进行分组
- c# - 如何在 EF Core 中使用 Table-Values 参数?
- excel - VBA代码导致excel中出现莫名其妙的字符
- javascript - 如何在经典报告中粘贴区域标题并添加垂直滚动条
- ssl - javax.servlet.request.X509Certificate 属性返回 null
- python - 如何获取python对象中的所有属性和方法