Elixir 语言 列表分组聚合统计示例

Elixir阿木 发布于 2025-06-19 12 次阅读


摘要:

Elixir 是一种用于构建可扩展和可靠应用程序的函数式编程语言,它运行在 Erlang 虚拟机上。在数据处理和统计分析中,列表分组聚合统计是一个常见的任务。本文将围绕 Elixir 语言,通过代码示例展示如何对列表进行分组、聚合和统计。

一、

在 Elixir 中,列表是处理数据的基本结构之一。对于复杂的数据处理任务,如分组、聚合和统计,我们可以利用 Elixir 的内置函数和模式匹配功能来实现。本文将详细介绍如何使用 Elixir 进行列表分组聚合统计,并提供相应的代码示例。

二、准备工作

在开始之前,请确保您已经安装了 Elixir 和 Erlang。您可以通过以下命令安装 Elixir:

shell

mix install elixir


三、列表分组

在 Elixir 中,我们可以使用 `Enum.group_by/3` 函数对列表进行分组。该函数接受三个参数:列表、键函数和值函数。键函数用于提取每个元素的分组键,值函数用于提取每个元素的值。

以下是一个简单的示例,演示如何根据年龄对人员列表进行分组:

elixir

defmodule GroupingExample do


def group_by_age(people) do


Enum.group_by(people, &(&1.age))


end


end

people = [


%{:name => "Alice", :age => 25},


%{:name => "Bob", :age => 30},


%{:name => "Charlie", :age => 25},


%{:name => "David", :age => 35}


]

grouped_people = GroupingExample.group_by_age(people)


IO.inspect(grouped_people)


输出结果将是一个以年龄为键的分组列表:


%{25 => [%{:name => "Alice", :age => 25}, %{:name => "Charlie", :age => 25}], 30 => [%{:name => "Bob", :age => 30}], 35 => [%{:name => "David", :age => 35}]}


四、列表聚合

聚合是指将列表中的元素合并成一个新的值。在 Elixir 中,我们可以使用 `Enum.reduce/3` 函数进行聚合。该函数接受三个参数:初始值、列表和累加函数。

以下是一个示例,演示如何计算列表中所有年龄的总和:

elixir

defmodule AggregationExample do


def sum_ages(people) do


Enum.reduce(people, 0, fn person, acc -> acc + person.age end)


end


end

sum = AggregationExample.sum_ages(people)


IO.puts("Total age: {sum}")


输出结果将是:


Total age: 125


五、列表统计

统计是指对列表中的元素进行计数或计算其他统计值。在 Elixir 中,我们可以使用 `Enum.count/1` 函数来计算列表的长度,或者使用自定义函数来计算其他统计值。

以下是一个示例,演示如何计算每个年龄组的人数:

elixir

defmodule StatisticsExample do


def count_by_age(people) do


Enum.group_by(people, &(&1.age))


|> Enum.map(fn {age, group} -> {age, length(group)} end)


end


end

counted_ages = StatisticsExample.count_by_age(people)


IO.inspect(counted_ages)


输出结果将是一个包含年龄和对应人数的列表:


[{25, 2}, {30, 1}, {35, 1}]


六、总结

本文通过代码示例展示了如何在 Elixir 中对列表进行分组、聚合和统计。Elixir 的函数式编程特性和模式匹配功能使得数据处理变得简单而高效。通过这些示例,我们可以看到 Elixir 在处理数据时的强大能力。

在实际应用中,您可以根据具体需求调整和扩展这些示例,以适应不同的数据处理场景。希望本文能帮助您更好地理解 Elixir 的列表分组聚合统计功能。