Здравствуйте, с вами снова я и сегодня мы разберём list, его возможности и особенности.
Ну-с, начнём.
list - как ни удивительно, но "лист"(Не слушайте меня двухнедельной давности, это связный список), это один из краеугольных камней бьёнда и, как я считаю, высокоуровневого программирования в целом. Листом является коллекция, группа элементов, последовательно соединённая друг за другом. Первый элемент имеет ссылку на второй, второй на третий и так далее. Также к листу можно обращаться как к массиву, используя квадратные скобки и адрес.
Теория-теория~~~~~
Лист может хранить в себе числа, строки, ссылки на объекты и много другое. Попробуем сделать свой первый лист.

Один важный ньюанс: лист является не переменной, а объектом, следовательно его необходимо создать. Есть много способов сделать это, но list() я нахожу самым удобным.
Вот мы и создали лист, воспользуемся же им.

В примере выше мы добавляем обычную цифру к списку. Оба способа работают одинаково, так что можно воспользоваться любым.
После всех этих операций мы получили лист, который содержит две единицы, так как добавляли двумя способами. Они хранятся отдельно друг от друга и не никоим образом не взаимодействуют(list(1, 1)).

Здесь же мы убрали один элемент из списка, получив list(1). Заметьте, пропали не оба, а лишь один элемент, который стоял в начале списка.
Точно также можно работать и с обычными объектами

Однако есть несколько важных замечаний: ссылка на один и тот же объект спокойно записывается в лист несколько раз. Как этого избежать, будет позже. Также, по причинам, описанным далее, даже если вы сделаете объекты полностью идентичными, удаление из листа не сработает, имейте это ввиду.
Перейдём к чему-то посложнее.
Бинарные операции с листами.
Выполняются практически так же, как и операции добавления и удаления, но выглядят чуть по-другому.

В чём их соль? Они позволяют гарантировано держать в листе лишь один экземпляр объекта, то есть в листе этот объект будет фигурировать лишь однажды. Логика их проста:
сложение это создать лист из текущего листа ИЛИ этого объекта.
вычитание это создать лист из текущего листа И всех объектов кроме данного.
Я уверен, большинство тут знает конъюнкцию, дизъюнкцию и прочие страшные слова.

Как вы могли заметить выше - листы также можно складывать и вычитать друг с другом. Сложение и вычитание, я думаю, не вызовут вопросов, а вот в бинарном пара может.
Почему же в бинарном сложении осталось две двойки? Ответ прост: новый лист записывается бинарным сложением каждого из элементов второго листа к первому листу. То есть вышеописанная операция может выглядеть как:

С вычитанием всё немного по-другому. Сравниваются все элементы между листами и все повторяющиеся элементы записываются.
Чтож, с математикой мы закончили, перейдём к кое чему другому.
Во-первых, к листу можно обращаться как к массиву:

Это значительно упрощает ситуации, когда ты точно знаешь позицию объекта.
Во-вторых, листу можно сделать свою индексацию:

Это позволяет сделать некий словарь или таблицу хешей, которые возвращают значение по входным данным. Однако будьте осторожны, тут есть свои ньюансы: если записывать через сложение - будет возвращаться значение, но если записывать через индекс, будет возвращаться именно значение индекса, а не значение массива по индексу.
В-третьих, лист обладает длиной, что позволяет обрабатывать его как обычный массив:

Чтож, я думаю, что написал тут основу для понимания всего величия листа и надеюсь, что вам было понятно и интересно, хоть он и не такой длинный, как остальные.
З.Ы. Написано с большим перерывом
