Bootstrap

Модуль `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Пропустить NEnum.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]

Копирование материалов разрешается только с указанием автора Roman Sakhno и индексируемой прямой ссылкой на сайт (http://itdid.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/sahroman.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/sahroman.

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как настроить свой компьютер

  2. Текстовая ссылка:

    Она выглядит вот так: Как настроить свой компьютер

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.

крипто-донат, на развитие сайта itdid.ru:

В новом окне с терминалом itdid.ru, введите любую сумму: