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
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]]
Encuentra todas las combinaciones de una lista, tomando n elementos.
Ejemplos
iex> ListTools.combinations([1, 2, 3], 2)
[[1, 2], [1, 3], [2, 3]]
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]
Aplana una lista anidada en una única lista.
Ejemplos
iex> ListTools.flatten([1, [2, 3], [4, [5, 6]]])
[1, 2, 3, 4, 5, 6]
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}]}
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]
Intercala un elemento entre cada elemento de una lista.
Ejemplos
iex> ListTools.intersperse([1, 2, 3], :sep)
[1, :sep, 2, :sep, 3]
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]]
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]
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]]
Elimina duplicados de una lista, manteniendo el orden.
Ejemplos
iex> ListTools.unique([1, 2, 3, 2, 1, 4])
[1, 2, 3, 4]