Шаг 7.
Однострочники Python.
Краткая памятка по Python. Контейнерные структуры данных. Списки

    На этом шаге мы рассмотрим, что такое список и перечислим некоторые операции над списками.

    Python включает контейнерные типы данных, позволяющие легко и эффективно осуществлять сложные операции.

Списки

    Список (list) - это контейнерный тип данных, предназначенный для хранения последовательности элементов. В отличие от строк, списки изменяемые (mutable), их можно модифицировать во время выполнения. Что такое тип данных список, удобнее всего показать на примерах:

l = [1, 2, 2]
print(len(l))
# 3

    Этот фрагмент кода демонстрирует создание списка и заполнение его тремя целочисленными элементами с помощью квадратных скобок. Как видите, в списке могут быть повторяющиеся элементы. Функция len() возвращает количество элементов в списке.

Ключевое слово: is

    Ключевое слово is просто проверяет, ссылаются ли две переменные на один объект в памяти. Новичков, у которых нет опыта работы с Python, оно может привести в замешательство. В примере 1.7 мы проверяем, ссылаются ли два целых числа и два списка на одни и те же объекты в памяти.


Пример 1.7. Ключевое слово is
y = x = 3
print(x is y)
# True

print([3] is [3])
# False

    Если создать два списка (даже состоящих из одних и тех же элементов), то они будут ссылаться на два различных объекта-списка в памяти. Модификация одного из этих объектов никак не повлияет на второй. Списки - изменяемые, поскольку их можно модифицировать после создания. Следовательно, если проверить, ссылаются ли два списка на один объект в памяти, результат будет равен False. А целочисленные значения - неизменяемые, так что нет риска случайно изменить через объект одной переменной значения всех остальных переменных. Объект 3 типа integer нельзя изменить, поскольку такая попытка просто приведет к созданию нового объекта integer, а старый останется неизменным.

Добавление элементов

    Язык Python предлагает три основных способа добавления элементов в уже существующий список:

# 1. Добавление в конец списка
l = [1, 2, 2]
l.append(4) 
print(l)
# [1, 2, 2, 4]

# 2. Вставка 
l = [1, 2, 4] 
l.insert(2, 3) 
print(l)
# [1, 2, 3, 4]

# 3. Конкатенация списков 
print([1, 2, 2] + [4])
# [1, 2, 2, 4]

    В результате всех трех операций получается один и тот же список [1, 2, 2, 4]. Но операция append выполняется быстрее всего, поскольку не требует ни обхода списка для вставки элементов в нужное место (как в случае insert), ни создания нового списка на основе двух подсписков (как в случае конкатенации списков). Если не вдаваться в подробности, то операцию insert имеет смысл использовать только для добавления элемента в конкретное место списка, причем не в конце, а конкатенацию - для конкатенации двух списков произвольной длины. Обратите внимание, что существует и четвертый метод, extend(). Он служит для добавления в конец списка нескольких элементов сразу наиболее эффективным способом.

Удаление элементов

    Элемент x можно легко удалить из списка с помощью метода remove(x) списка:

l = [1, 2, 2, 4]
l.remove(1)
print(l)
# [2, 2, 4]

    Этот метод работает с самим объектом списка, а не создает новый, измененный список. В предыдущем примере кода мы создали объект списка l и удалили из него элемент. Такой подход не требует избыточных копий данных списка, позволяя экономить память.

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг