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

F#中是否有内置函数计算整数列表的众数?

在F#中计算整数列表的众数

嘿,好问题!F#的标准库(包括核心库和常用集合库)里没有专门用来计算整数列表众数的内置函数,不过自己实现一个其实很直观,还能根据你的需求灵活调整细节~

基础实现(返回第一个出现的众数)

针对你给出的示例列表,我们可以先统计每个整数的出现次数,再找出次数最多的那个元素:

let integers = [1; 2; 3; 4; 5; 3]

let mode list =
    list
    |> Seq.countBy id  // 按元素值分组,统计每个值的出现次数
    |> Seq.sortByDescending snd  // 按出现次数从高到低排序
    |> Seq.head  // 取次数最高的那一组
    |> fst  // 提取对应的元素值

// 测试调用
mode integers  // 输出结果为 3,和你的预期一致

进阶实现(返回所有众数)

如果你的列表存在多个出现次数相同的众数(比如[1;2;2;3;3]),上面的方法只会返回第一个遇到的众数。如果需要返回所有众数,可以调整实现:

let allModes list =
    let elementCounts = list |> Seq.countBy id |> Seq.toList
    let maxFrequency = elementCounts |> Seq.map snd |> Seq.max
    // 筛选出所有出现次数等于最高频率的元素
    elementCounts 
    |> List.filter (fun (_, count) -> count = maxFrequency)
    |> List.map fst

// 测试调用
allModes [1;2;2;3;3]  // 输出结果为 [2;3]

这些实现都利用了F#的序列操作符,简洁又符合函数式编程的风格,你可以根据实际场景选择合适的版本~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:42:20