list - 从列表列表中删除一个元素 Haskell
问题描述
我正在尝试从列表列表中删除一个元素,但前提是该元素位于长度为 1 的列表中。例如:
removeElement 1 [[2,3],[1,2],[1]]
[[2,3],[1,2]]
removeElement 2 [[1,2,3,4]]
[[1,2,3,4]]
removeElement 3 [[3],[1,4,5]]
[[1,4,5]]
到目前为止我有这个,但我不知道如何继续,或者使用哪个功能。
removeElement :: (Eq a) => a -> [[a]] -> [[a]]
removeElement a [[]] = []
removeElement a ((x:xs):rs) = if a == x then (xs:rs) else [x] :( removeElement a (xs:rs))
解决方案
这是一个过滤的例子:
removeElement :: Eq a => a -> [[a]] -> [[a]]
removeElement e = filter (/= [e])
用 ghci 测试你的例子:
> removeElement 1 [[2,3],[1,2],[1]]
[[2,3],[1,2]]
> removeElement 2 [[1,2,3,4]]
[[1,2,3,4]]
> removeElement 3 [[3],[1,4,5]]
[[1,4,5]]
推荐阅读
- prometheus - 如何在 prometheus 中省略 Promql 标签以避免重复通知
- segmentation-fault - 程序收到信号 SIGSEGV,尝试分配多长度 3D 数组时出现分段错误
- windows - BizTalk 尝试连接到服务器“DB”上的“BizTalkMgmtDb”SQL Server 数据库失败
- dask - 为什么迟迟什么都不做?
- java - 如何在应用程序中插入 PDF 文件
- angular - TypeScript 将重载添加到另一个定义文件中的方法
- asp.net-core - VS2019:在 asp.net 核心项目中添加或重命名文件非常慢
- c++ - 优先级队列和向量中相同比较器的顺序差异
- python - 提取整数
- java - IntelliJ 看不到 SVN 存储库中的文件