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

如何在Elixir中统计满足条件的元素出现次数?

在Elixir中实现统计列表中≥5元素个数的功能

需求

需要实现如下Python代码的功能:

sum = 0
for elem in list:
  if elem >= 5:
    sum += 1

示例:给定列表 [0, 5, 8, 3, 10],预期返回3。

初始错误代码

我编写了以下Elixir代码,但无法正常运行:

cond do
      Enum.empty?(list) -> 0
      length(list) == 1 -> if List.first(list) >= 5 do 1 else 0 end
      true -> 
        Enum.reduce(list, 0, fn x, acc -> if x >= 5 do acc + 1 end end)
      end
end

报错信息

运行后出现错误:

** (ArithmeticError) bad argument in arithmetic expression: nil + 1

问题排查与修复

找到问题了!
问题根源:当x < 5时,if表达式没有返回任何值,导致累加器acc接收不到有效值,最终变为nil,引发算术运算错误。

修正后的可运行代码:

cond do
      Enum.empty?(list) -> 0
      length(list) == 1 -> if List.first(list) >= 5 do 1 else 0 end
      true -> 
        Enum.reduce(list, 0, fn x, acc -> if x >= 5 do acc + 1 else acc + 0 end end)
      end
end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:42:09