You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

F#提取含空子列表的嵌套列表首元素报错如何解决?

问题原因

原来的代码使用List.head处理子列表,该函数仅支持非空列表输入,遇到空子列表时就会抛出System.ArgumentException: The input list was empty.异常。

解决方案

根据需求「非空子列表返回首元素、空子列表对应返回空列表」,对每个子列表做模式匹配分别处理即可,修改后的代码如下:

let firstCol (lst: 'a list list) =
    List.map (function
        | [] -> []
        | head :: _ -> [head]) lst

效果示例

输入:firstCol [[1;2]; []; [3;4]; []]
输出:[[1]; []; [3]; []]

可选扩展方案

如果你需要的返回结果不需要嵌套列表,也可以选择返回option类型列表,空列表对应None,非空对应Some 首元素,代码如下:

let firstCol (lst: 'a list list) =
    List.map (function
        | [] -> None
        | head :: _ -> Some head) lst

该版本输入相同测试用例的输出为:[Some 1; None; Some 3; None]


内容的提问来源于stack exchange,提问作者Blib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:57:01