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

OCaml中如何统计列表中具备指定属性值的记录数量

OCaml 统计记录列表中指定属性值的元素总数

你可以直接通过OCaml标准库的List模块提供的函数实现需求,有两种常用写法:

  • 写法1:筛选后取长度(可读性优先)
    先通过List.filter过滤出所有age等于目标值的记录,再调用List.length获取筛选后列表的长度即可,逻辑直观好写:
    let count_by_age target person_list =
      person_list
      |> List.filter (fun p -> p.age = target)
      |> List.length
    
    (* 调用示例:统计age=21的记录数 *)
    let () = Printf.printf "%d\n" (count_by_age 21 personlist)
    (* 输出:2 *)
    
  • 写法2:折叠累加(性能优先)
    如果列表规模很大,可以用List.fold_left一次遍历直接累加计数,不会生成中间筛选列表,内存和遍历效率更高:
    let count_by_age target person_list =
      List.fold_left 
        (fun count p -> if p.age = target then count + 1 else count)
        0
        person_list
    

两种写法的运行结果完全一致,针对你给出的示例数据,传入目标age为21时都会返回预期结果2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:24:12