list - F#:创建一个包含所有列表头部的列表,在列表中
问题描述
我正在尝试创建一个函数,该函数采用列表中所有列表的头部([[]])。到目前为止,我已经找到了如何获取列表中所有列表的所有第一个整数,但我似乎无法将其放入同一函数中的列表中。
let isTable (llst : list<list<'a>>) : bool =
List.forall (fun (elem : list<'a>) -> not elem.IsEmpty && elem.Length = elem.Length) llst
let a = [[1;2;3];[4;5;6]]
printfn "%A" (isTable a)
List.iter (fun x -> printfn "%A " (List.head x)) a
有人可以在这里帮忙吗?
解决方案
您可以使用List.map
将List.head
您已经找到的应用到每个列表。
let a = [[1;2;3];[4;5;6]]
let collectHeads l = List.map List.head l
printfn "%A" (collectHeads a) // [1,4]
与List.head
,不同的是,List.map
它是一个高阶函数,需要一个函数作为参数。预期的函数应该采用列表类型的一个元素并返回另一个元素。碰巧就是这样List.head
做的:它将一个列表作为输入并返回它的头部作为结果元素。
推荐阅读
- python - python中的交叉过滤器
- xamarin.forms - Xamarin.forms - 自定义 ViewCell 中的 BoxView
- python - 使用 XlsxWriter 将单元格中的文本定向到垂直?
- jquery - 带有承诺的 Jquery Ajax 调用
- javascript - 在页面重新加载时根据屏幕宽度切换菜单的可见性
- android - 如何从活动 3 过渡到活动 1?
- php - 如何将函数数据传递给刀片视图
- trace32 - Trace32:设置在 data.dump 上显示的行数的方法
- powershell - PowerShell 脚本无法在远程服务器上执行批处理文件
- git - Gitlab + Ansible 部署/管理多个集群