Python: Различия между списками и кортежами
В этом руководстве вы узнаете различия между списками и кортежами в Python. Списки и кортежи являются основными структурами данных-контейнерами в Python. На первый взгляд они кажутся очень похожими. Однако между ними существует ряд уникальных отличий, которые делают их использование весьма очевидным.
К концу этого урока вы узнаете:
Каковы ключевые различия и сходства между списками Python и кортежами Python?
Когда использование списка более целесообразно, чем использование кортежа
Когда использование кортежа более целесообразно, чем использование списка
Какие методы доступны и недоступны для двух структур данных
В Python как списки, так и кортежи являются структурами данных-контейнерами, но у них есть уникальные атрибуты. Списки Python, например, могут быть полезны для хранения значений, которые необходимо изменять, удалять или добавлять. В отличие от этого, кортежи Python позволяют вам быть уверенными в том, что данные в них не могут быть изменены.
Оглавление
Ключевые различия между списками Python и кортежами Python
В таблице ниже представлены ключевые различия и сходства между списками и кортежами Python. Некоторые из пунктов будут верны как для списков, так и для кортежей, в то время как у других будут отмечены различия:
Синтаксис
Создано с использованием квадратных скобок: []
Создано с использованием обычных круглых скобок: ()
Элементы можно изменять, удалять или добавлять в
Элементы не могут быть изменены (примечание в разделе об изменении)
Да
Да
Да
Да
Размер/Длина
Размер и длину можно изменить
Размер и длина фиксируются после создания.
Потребление памяти
Повышенное потребление памяти
Меньшее потребление памяти
Возможность копирования
Могут быть созданы копии
Любая «копия» будет указывать непосредственно на оригинал.
Может использоваться как ключи словаря.
Нет
Да
Перебор элементов
Может быть немного медленнее, чем кортежи
Может быть немного быстрее, чем списки
В следующих разделах мы подробнее разберем каждый из этих пунктов. Каждый из них имеет технические сложности, и многие из них заслуживают более глубокого изучения.
Создание и индексирование списков и кортежей Python
Python списки и кортежи работают очень похожим образом. Python списки используют квадратные скобки []
, в то время как Python кортежи используют обычные скобки ()
. Оба эти типа данных могут содержать элементы различных типов данных, что означает, что они являются гетерогенными.
Давайте посмотрим, как можно создать эти два типа данных:
Поскольку оба этих объекта упорядочены, мы можем получать доступ к элементам внутри них, используя их индексную позицию. Работают как положительные, так и отрицательные индексы.
Давайте попробуем получить доступ к небольшому количеству данных в них:
На данный момент эти два объекта кажутся довольно похожими. В следующем разделе мы подробнее рассмотрим изменяемость этих объектов, чтобы лучше понять, где лежат некоторые ключевые различия.
Изменяемость списков и кортежей Python
Python списки являются изменяемыми объектами, что означает, что вы можете обновлять элементы в них, удалять элементы или добавлять к ним элементы.
В то время как кортежи в Python являются неизменяемыми: это означает, что после их создания они не могут быть изменены.
Давайте посмотрим, как мы можем изменить значение в списке Python:
Давайте посмотрим, что произойдет, когда мы попытаемся сделать то же самое с нашими кортежами:
При попытке изменить значения кортежа была вызвана ошибка.
Существует одно важное исключение. Если наш кортеж содержит изменяемый объект, такой как список, то этот объект может быть модифицирован. Давайте посмотрим, как это выглядит:
Потребление памяти списками и кортежами Python
Поскольку списки в Python являются изменяемыми, а кортежи в Python нет, Python может более эффективно использовать память при работе с кортежами.
Причина этого заключается в том, что при создании списка Python выделяет дополнительное пространство, чтобы иметь возможность его изменять. С другой стороны, в случае с кортежами Python, Python точно знает, сколько памяти нужно выделить!
Чтобы лучше проиллюстрировать это, давайте проверим размеры нашего кортежа и списка:
Мы видим, что список на 33% больше по объему в байтах! На таком уровне это может не иметь большого значения. Однако при работе с большими наборами данных разница может быть огромной.
Сравнение методов списков Python и кортежей
Поскольку списки Python являются изменяемыми, у них есть гораздо больше доступных методов. Тем не менее, у кортежей Python также есть большое количество методов, которые могут облегчить поиск и извлечение данных.
Простое сравнение длины таблицы покажет, сколько больше методов доступно для списков по сравнению с кортежами.
Давайте начнем с рассмотрения методов списка в Python:
Методы списка Python
Следующий список содержит все методы, доступные для списков Python:
list.append(x)
Добавляет элемент в конец списка.
list.extend(iterable)
Расширяет список, добавляя все элементы из итерируемого объекта.
list.insert(i, x)
Вставляет элемент в заданную позицию. Первый аргумент — это индекс элемента, перед которым необходимо вставить.
list.remove(x)
Удаляет первый элемент из списка, значение которого равно x.
list.pop([i])
Удаляет элемент в заданной позиции в списке и возвращает его.
list.clear()
Удаляет все элементы из списка.
list.index(x[, start[, end]])
Возвращает индекс, отсчитываемый от нуля, в списке первого элемента, значение которого равно x.
list.count(x)
Возвращает количество раз, когда x появляется в списке.
list.sort(*, key=None, reverse=False)
Сортирует элементы списка по месту.
list.reverse()
Меняет местами элементы списка.
list.copy()
Возвращает неполную копию списка.
Теперь давайте посмотрим на методы, доступные для кортежей:
Методы кортежа Python
Для кортежей доступны следующие методы:
tuple.index(x[, start[, end]])
Возвращает индекс, отсчитываемый от нуля, в кортеже первого элемента, значение которого равно x.
tuple.count(x)
Возвращает количество раз, когда x появляется в кортеже.
Копирование списков и кортежей Python
Одна интересная особенность списков и кортежей в Python заключается в том, что списки можно копировать, в то время как кортежи копировать нельзя. Поскольку кортежи неизменяемы, при попытке скопировать кортеж он просто возвращает сам себя.
Давайте сначала посмотрим, как это выглядит со списками:
Мы видим, что эти два списка указывают на разные места памяти. Теперь давайте попробуем это с кортежами:
Заключение
В этом руководстве вы узнали о различиях между списками и кортежами в Python. Понимание этих различий помогает лучше понять, когда использовать то или иное из этих структур данных.
Некоторые ключевые отличия заключаются в том, что кортежи неизменяемы, имеют фиксированную длину и могут быть более эффективны с точки зрения использования памяти. В свою очередь, списки изменяемы, не имеют фиксированной длины и могут использовать больше памяти.
Дополнительные ресурсы
Чтобы узнать больше о связанных темах, ознакомьтесь с обучающими материалами ниже:
Как использовать именованные кортежи Python
Словари Python: полный обзор
Добавить к списку Python (добавить в начале)
Python: добавление к кортежу (3 простых способа)
Last updated