Elixir 语言 列表基础操作与遍历方法

Elixir阿木 发布于 28 天前 5 次阅读


Elixir 语言列表基础操作与遍历方法详解

Elixir 是一种函数式编程语言,它运行在 Erlang 虚拟机(BEAM)上,非常适合构建高并发、分布式系统。在 Elixir 中,列表(List)是一种非常常见的数据结构,用于存储一系列有序的元素。本文将围绕 Elixir 语言中的列表基础操作与遍历方法进行详细介绍。

列表基础操作

列表的创建

在 Elixir 中,创建一个列表非常简单,可以使用方括号 `[]` 来创建一个空列表,或者使用逗号 `,` 来添加元素。

elixir

创建空列表


empty_list = []

创建包含元素的列表


list_with_elements = [1, 2, 3, 4, 5]


列表的元素访问

Elixir 中的列表索引从 0 开始,可以通过索引来访问列表中的元素。

elixir

访问列表中的元素


first_element = list_with_elements[0] => 1


last_element = list_with_elements[-1] => 5


列表的长度

可以使用 `length/1` 函数来获取列表的长度。

elixir

获取列表长度


length_of_list = length(list_with_elements) => 5


列表的元素插入

可以使用 `insert_at/3` 函数在列表的指定位置插入元素。

elixir

在列表的第二个位置插入元素 99


new_list = insert_at(list_with_elements, 1, 99)


列表的元素删除

可以使用 `delete_at/2` 函数来删除列表中的元素。

elixir

删除列表中的第二个元素


new_list = delete_at(list_with_elements, 1)


列表的元素替换

可以使用 `update_at/3` 函数来替换列表中的元素。

elixir

替换列表中的第二个元素为 100


new_list = update_at(list_with_elements, 1, 100)


列表的元素合并

可以使用 `++` 运算符来合并两个列表。

elixir

合并两个列表


combined_list = list_with_elements ++ [6, 7, 8]


列表的元素分割

可以使用 `split/2` 函数来分割列表。

elixir

分割列表


{first_part, second_part} = split(list_with_elements, 3)


列表的遍历方法

使用 Enum 模块遍历

Elixir 的 Enum 模块提供了一系列的函数来遍历列表,这些函数通常以 `each`、`map`、`filter`、`reduce` 等命名。

`each/2`

`each/2` 函数接受一个函数和一个列表,对列表中的每个元素执行该函数。

elixir

打印列表中的每个元素


Enum.each(list_with_elements, fn x -> IO.puts(x) end)


`map/2`

`map/2` 函数接受一个函数和一个列表,对列表中的每个元素执行该函数,并返回一个包含结果的列表。

elixir

将列表中的每个元素乘以 2


new_list = Enum.map(list_with_elements, fn x -> x 2 end)


`filter/2`

`filter/2` 函数接受一个函数和一个列表,返回一个包含满足条件的元素的新列表。

elixir

返回列表中大于 3 的元素


filtered_list = Enum.filter(list_with_elements, fn x -> x > 3 end)


`reduce/3`

`reduce/3` 函数接受一个初始值、一个函数和一个列表,对列表中的每个元素执行该函数,并返回一个累加的结果。

elixir

计算列表中所有元素的和


sum = Enum.reduce(list_with_elements, 0, fn x, acc -> x + acc end)


使用流(Stream)遍历

Elixir 的流(Stream)提供了一种惰性求值的遍历方式,可以减少内存消耗。

elixir

使用流来遍历列表,并打印每个元素


Enum.each(Enum.stream(list_with_elements), fn x -> IO.puts(x) end)


使用递归遍历

在 Elixir 中,递归也是一种常见的遍历列表的方法。

elixir

使用递归遍历列表,并打印每个元素


defmodule ListTraversal do


def print_elements([]), do: :ok


def print_elements([head | tail]) do


IO.puts(head)


print_elements(tail)


end


end

ListTraversal.print_elements(list_with_elements)


总结

本文详细介绍了 Elixir 语言中的列表基础操作与遍历方法。通过学习这些操作和遍历方法,我们可以更有效地处理列表数据,并构建出更加复杂和高效的 Elixir 应用程序。希望本文能对您有所帮助。