Вы здесь:
Главная - Базовые типы данных elixir, и их неизменяемость - Модуль `List`
Модуль `List`
Вот тебе полная таблица всех функций для работы со списками (List) в Elixir, со сжатыми описаниями и примерами — в том же формате, что и для строк.
(Актуально для Elixir 1.17 / OTP 27.)
? Модуль `List`
> List — основной модуль для работы со списками ([a, b, c]), реализованными как односвязные структуры.
? Базовые операции
Функция Назначение Пример
List.first/1Первый элемент List.first([1,2,3]) #=> 1
List.last/1Последний элемент List.last([1,2,3]) #=> 3
List.delete/2Удаляет первое вхождение List.delete([1,2,1], 1) #=> [2,1]
List.delete_at/2Удаляет по индексу List.delete_at([:a,:b,:c], 1) #=> [:a,:c]
List.insert_at/3Вставляет элемент по индексу List.insert_at([1,3], 1, 2) #=> [1,2,3]
List.replace_at/3Заменяет по индексу List.replace_at([1,2,3], 1, 9) #=> [1,9,3]
List.pop_at/2Извлекает по индексу List.pop_at([10,20,30], 1) #=> {20, [10,30]}
List.update_at/3Применяет функцию к элементу List.update_at([1,2,3], 1, &(&1*10)) #=> [1,20,3]
List.duplicate/2Повторяет элемент List.duplicate(:ok, 3) #=> [:ok,:ok,:ok]
List.wrap/1Оборачивает значение в список List.wrap(5) #=> [5], List.wrap(nil) #=> []
? Длина и проверка
Функция Назначение Пример
length/1 (из Kernel) Длина списка length([1,2,3]) #=> 3
List.empty?/1Проверка на пустоту List.empty?([]) #=> true
? Работа с концами списка
Функция Назначение Пример
List.flatten/1Расплющивает вложенные списки List.flatten([1,[2,[3]]]) #=> [1,2,3]
List.flatten/2С добавлением "tail" List.flatten([1,[2]], [3]) #=> [1,2,3]
List.flatten_once/1Только на один уровень List.flatten_once([1,[2,[3]]]) #=> [1,2,[3]]
List.foldl/3Левый свёртка (reduce) List.foldl([1,2,3], 0, &+/2) #=> 6
List.foldr/3Правая свёртка List.foldr([1,2,3], [], fn x, acc -> [x | acc] end)
List.keystore/4Заменяет или добавляет кортеж по ключу List.keystore([{:a,1}], :a, 0, {:a,2}) #=> [{:a,2}]
List.keydelete/3Удаляет элемент по ключу List.keydelete([{:a,1}, {:b,2}], :a, 0) #=> [{:b,2}]
List.keyreplace/4Заменяет по ключу List.keyreplace([{:a,1}], :a, 0, {:a,9})
List.keymember?/3Проверяет наличие ключа List.keymember?([{:a,1}], :a, 0) #=> true
List.keyfind/3Находит по ключу List.keyfind([{:a,1}], :a, 0) #=> {:a,1}
List.keytake/3Извлекает и возвращает без найденного List.keytake([{:a,1},{:b,2}], :a, 0)
List.keysort/2Сортирует по элементу в кортеже List.keysort([{:a,3},{:b,1}], 1) #=> [{:b,1},{:a,3}]
? Слияние, разделение, объединение
Функция Назначение Пример
List.flatten/1Убирает вложенность List.flatten(1],[2) #=> [1,2]
List.zip/1Объединяет несколько списков List.zip(1,2],[3,4) #=> [{1,3},{2,4}]
List.unzip/1Разделяет список кортежей List.unzip([{1,2},{3,4}]) #=> {[1,3],[2,4]}
List.myers_difference/2Разница списков List.myers_difference([1,2,3], [2,3,4])
List.insert_at/3Вставка List.insert_at([:a,:b], 1, :x) #=> [:a,:x,:b]
List.concat/1Склеивает список списков List.concat(1,2],[3,4) #=> [1,2,3,4]
? Сортировка и поиск
Функция Назначение Пример
List.sort/1Сортировка по < List.sort([3,1,2]) #=> [1,2,3]
List.sort/2С пользовательской функцией List.sort([1,2,3], &>/2) #=> [3,2,1]
List.keysort/2Сортировка списка кортежей List.keysort([{:a,3},{:b,1}], 1)
List.keyfind/3Найти кортеж по ключу List.keyfind([{:a,1}], :a, 0)
List.keytake/3Найти и удалить по ключу List.keytake([{:a,1},{:b,2}], :a, 0)
? Преобразование и фильтрация
Функция Назначение Пример
List.foldl/3Левое свёртывание List.foldl([1,2,3], 0, &+/2)
List.foldr/3Правое свёртывание List.foldr([1,2,3], 0, &+/2)
List.keysort/2Сортировка по ключу List.keysort([{:x,2},{:a,1}], 0)
List.myers_difference/2Разница списков List.myers_difference(["a","b"],["b","c"])
Enum.map/2Применить функцию Enum.map([1,2,3], &(&1*2))
Enum.filter/2Отфильтровать Enum.filter([1,2,3], &rem(&1,2)==1)
Enum.reject/2Отбросить элементы Enum.reject([1,2,3], &(&1<3))
? Деструктуризация и сопоставление
Функция Назначение Пример
hd/1 (Kernel) Первый элемент hd([1,2,3]) #=> 1
tl/1 (Kernel) Хвост списка tl([1,2,3]) #=> [2,3]
[head | tail]Разделение списка [h | t] = [1,2,3] #=> h=1, t=[2,3]
? Уникальность и множества
Функция Назначение Пример
List.usort/1Удаляет дубликаты и сортирует List.usort([3,2,3,1]) #=> [1,2,3]
List.uniq/1Удаляет дубликаты, сохраняя порядок List.uniq([1,2,2,3,1]) #=> [1,2,3]
List.uniq_by/2Удаляет дубликаты по функции List.uniq_by(["aA","Aa"], &String.downcase/1)
? Работа с позициями и поиском
Функция Назначение Пример
List.keyfind/3Найти по ключу List.keyfind([{:a,1}], :a, 0)
List.keymember?/3Проверить наличие ключа List.keymember?([{:a,1}], :a, 0)
List.keydelete/3Удалить по ключу List.keydelete([{:a,1},{:b,2}], :a, 0)
List.keyreplace/4Заменить по ключу List.keyreplace([{:a,1}], :a, 0, {:a,9})
? Разное
Функция Назначение Пример
List.to_tuple/1Список → кортеж List.to_tuple([:a,:b]) #=> {:a,:b}
Tuple.to_list/1Кортеж → список Tuple.to_list({:a,:b}) #=> [:a,:b]
List.myers_difference/2Разница списков (diff) List.myers_difference([1,2],[2,3])
List.keysort/2Сортировка по ключу List.keysort([{:a,3},{:b,1}], 1)
⚙ Полезные из `Enum` (работают со списками)
Функция Назначение Пример
Enum.reverse/1Разворот Enum.reverse([1,2,3]) #=> [3,2,1]
Enum.take/2Первые N элементов Enum.take([1,2,3,4], 2) #=> [1,2]
Enum.drop/2Пропустить N Enum.drop([1,2,3,4], 2) #=> [3,4]
Enum.concat/2Склеить списки Enum.concat([1,2], [3,4]) #=> [1,2,3,4]
Enum.zip/2Сшить списки Enum.zip([1,2], [:a,:b]) #=> [{1,:a},{2,:b}]
Enum.with_index/1Добавить индексы Enum.with_index(["a","b"]) #=> [{"a",0},{"b",1}]
Enum.find/2Найти элемент Enum.find([1,2,3], &(&1>2)) #=> 3
Enum.member?/2Проверить наличие Enum.member?([1,2,3], 2) #=> true
? Протокол `Collectable` и оператор `++` / `--`
Синтаксис Назначение Пример
++Конкатенация [1,2] ++ [3,4] #=> [1,2,3,4]
--Разность списков [1,2,3] -- [2] #=> [1,3]
Создано 05.11.2025 08:12:38
Roman Sakhno
Копирование материалов разрешается только с указанием автора Roman Sakhno и индексируемой прямой ссылкой на сайт (http://itdid.ru )!
Добавляйтесь ко мне в друзья ВКонтакте : http://vk.com/sahroman . Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/sahroman .
Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.
Порекомендуйте эту статью друзьям:
Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):
Кнопка:
Она выглядит вот так:
Текстовая ссылка:
Она выглядит вот так: Как настроить свой компьютер
BB-код ссылки для форумов (например, можете поставить её в подписи):
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.