AuthManager.Tools.ListTools (auth_manager_core v0.1.1)

Utilidades para manipulación de listas.

Summary

Functions

Divide una lista en sublistas de un tamaño específico.

Encuentra todas las combinaciones de una lista, tomando n elementos.

Comprime elementos adyacentes duplicados en la lista.

Aplana una lista anidada en una única lista.

Agrupa los elementos de una lista por el resultado de una función.

Intercala dos o más listas, alternando elementos.

Intercala un elemento entre cada elemento de una lista.

Encuentra todas las permutaciones de una lista.

Rota una lista por un cierto número de posiciones. Si el número es positivo, rota a la izquierda. Si el número es negativo, rota a la derecha.

Agrupa elementos consecutivos en sublistas según el tamaño especificado. A diferencia de chunk, esto crea "ventanas deslizantes".

Elimina duplicados de una lista, manteniendo el orden.

Functions

chunk(list, size)

Divide una lista en sublistas de un tamaño específico.

Ejemplos

iex> ListTools.chunk([1, 2, 3, 4, 5, 6, 7], 3)
[[1, 2, 3], [4, 5, 6], [7]]

combinations(arg1, n)

Encuentra todas las combinaciones de una lista, tomando n elementos.

Ejemplos

iex> ListTools.combinations([1, 2, 3], 2)
[[1, 2], [1, 3], [2, 3]]

compress(list)

Comprime elementos adyacentes duplicados en la lista.

Ejemplos

iex> ListTools.compress([1, 1, 2, 3, 3, 3, 4, 4, 1])
[1, 2, 3, 4, 1]

flatten(list)

Aplana una lista anidada en una única lista.

Ejemplos

iex> ListTools.flatten([1, [2, 3], [4, [5, 6]]])
[1, 2, 3, 4, 5, 6]

group_by(list, fun)

Agrupa los elementos de una lista por el resultado de una función.

Ejemplos

iex> ListTools.group_by([%{name: "Juan", age: 30}, %{name: "María", age: 30}, %{name: "Pedro", age: 25}], fn x -> x.age end)
%{30 => [%{name: "Juan", age: 30}, %{name: "María", age: 30}], 25 => [%{name: "Pedro", age: 25}]}

interleave(lists)

Intercala dos o más listas, alternando elementos.

Ejemplos

iex> ListTools.interleave([1, 2, 3], [4, 5, 6])
[1, 4, 2, 5, 3, 6]

iex> ListTools.interleave([1, 2], [3], [4, 5, 6])
[1, 3, 4, 2, 5, 6]

interleave(list1, list2, list3 \\ [], list4 \\ [])

intersperse(list, separator)

Intercala un elemento entre cada elemento de una lista.

Ejemplos

iex> ListTools.intersperse([1, 2, 3], :sep)
[1, :sep, 2, :sep, 3]

permutations(list)

Encuentra todas las permutaciones de una lista.

Ejemplos

iex> ListTools.permutations([1, 2, 3])
[[1, 2, 3], [1, 3, 2], [2, 1, 3], [2, 3, 1], [3, 1, 2], [3, 2, 1]]

rotate(list, n)

Rota una lista por un cierto número de posiciones. Si el número es positivo, rota a la izquierda. Si el número es negativo, rota a la derecha.

Ejemplos

iex> ListTools.rotate([1, 2, 3, 4, 5], 2)
[3, 4, 5, 1, 2]

iex> ListTools.rotate([1, 2, 3, 4, 5], -1)
[5, 1, 2, 3, 4]

sliding_window(list, size)

Agrupa elementos consecutivos en sublistas según el tamaño especificado. A diferencia de chunk, esto crea "ventanas deslizantes".

Ejemplos

iex> ListTools.sliding_window([1, 2, 3, 4, 5], 3)
[[1, 2, 3], [2, 3, 4], [3, 4, 5]]

unique(list)

Elimina duplicados de una lista, manteniendo el orden.

Ejemplos

iex> ListTools.unique([1, 2, 3, 2, 1, 4])
[1, 2, 3, 4]