Добавить в корзинуПозвонить
Найти в Дзене
Осваиваю IT с нуля

Python: list vs tuple — в чём разница и что выбрать

При изучении Python я столкнулся с вопросом. Есть две похожие структуры данных — list и tuple. На первый взгляд они схожи, ведь обе представляют собой последовательности элементов. Но между ними, как оказалось, есть важные отличия, и от правильного выбора зависит как удобство написания кода, так и его производительность. В этой статье мы подробно сравним python list и python tuple, разберём их особенности, преимущества и недостатки, а в конце дадим рекомендации, какой тип использовать в тех или иных ситуациях. А в конце удобная сравнительная табличка. List (список) — это изменяемая коллекция элементов. Это значит, что после создания списка вы можете изменять его содержимое: добавлять, удалять, сортировать элементы и т.д. Пример: fruits = ['apple', 'banana', 'cherry'] fruits.append('orange') print(fruits) # выведет ['apple', 'banana', 'cherry', 'orange'] Списки очень гибкие и являются одной из самых часто используемых структур в Python. Благодаря множеству встроенных методов, python
Оглавление

Python list и tuple похожи, но есть различия
Python list и tuple похожи, но есть различия

При изучении Python я столкнулся с вопросом. Есть две похожие структуры данных — list и tuple. На первый взгляд они схожи, ведь обе представляют собой последовательности элементов. Но между ними, как оказалось, есть важные отличия, и от правильного выбора зависит как удобство написания кода, так и его производительность.

В этой статье мы подробно сравним python list и python tuple, разберём их особенности, преимущества и недостатки, а в конце дадим рекомендации, какой тип использовать в тех или иных ситуациях.

А в конце удобная сравнительная табличка.

Что такое list в Python

List (список) — это изменяемая коллекция элементов. Это значит, что после создания списка вы можете изменять его содержимое: добавлять, удалять, сортировать элементы и т.д.

Пример:

fruits = ['apple', 'banana', 'cherry']
fruits.append('orange')
print(fruits) # выведет ['apple', 'banana', 'cherry', 'orange']

Списки очень гибкие и являются одной из самых часто используемых структур в Python. Благодаря множеству встроенных методов, python list отлично подходит для работы с динамическими данными.

Это наверное самая функциональная коллекция. Такого количества методов как у list нет ни у какой другой.

Про методы списков поговорим в следующих статьях. Подпишитесь, чтобы не пропустить.

Что такое tuple в Python

Tuple (кортеж) — это неизменяемая коллекция. После создания кортежа вы не можете изменить его содержимое: ни добавить, ни удалить, ни заменить элементы.

Пример, попытаемся изменить первый элемент:

coordinates = (10, 20)
# coordinates[0] = 5 # Ошибка: кортеж нельзя изменить

Кортежи часто используют для хранения фиксированных наборов значений, особенно когда нужно быть уверенным, что данные не будут случайно изменены. Python tuple также может использоваться как ключ в словаре — в отличие от списка.

Кстати, строки в таблицах реляционных баз данных еще называют кортежами. И данные из таблиц БД приезжают в исполняемую программу именно в виде кортежей. Подумайте кстати почему.

Изменяемость

List: изменяемый

Вы можете изменять содержимое списка:

numbers = [1, 2, 3]
numbers[0] = 100

Tuple: неизменяемый

Попытка изменить элемент кортежа вызовет ошибку:

t = (1, 2, 3)
# t[0] = 100 # TypeError

Неизменяемость делает python tuple безопасным для использования в многопоточном коде и защищённым от случайных изменений.

Производительность

Кортежи занимают меньше памяти и быстрее обрабатываются. А еще занимают меньше памяти. Определим размер коллекций с одинаковыми данными:

import sys
print(sys.getsizeof([1, 2, 3])) # list
print(sys.getsizeof((1, 2, 3))) # tuple

Результат покажет, что tuple легче. Если вы работаете с большим количеством данных и не планируете изменять их, tuple — более эффективный выбор.

Вложенность и структуры

Tuple можно использовать как ключ в словаре:

locations = { (40.7128, -74.0060): "New York" }

List нельзя использовать в качестве ключа, так как он изменяем:

{[1, 2]: "value"} # TypeError

Это делает python tuple незаменимым в некоторых структурах данных и алгоритмах.

Использование в функциях

При передаче списка в функцию, он может быть изменён внутри:

def modify_list(lst):
   lst.append(999)
data = [1, 2, 3]
modify_list(data)
print(data) # [1, 2, 3, 999]

С кортежем такого не произойдёт:

def modify_tuple(tpl):
   tpl[0] = 999 # Ошибка

Кстати, если функция возвращает несколько значений, они передаются как кортеж:

def return_values():
x = 1
y = 2
return x, y
print(return_values()) # напечатает (1, 2)

Ну и правильно. Не списком же отдавать однозначный и неизменный результат работы функции.

Синтаксические различия

  • Список: []
  • Кортеж: ()

Одноэлементные коллекции:

l = [5] # список
t = (5,) # кортеж, когда один элемент, запятая обязательна, в отличие от списка

Пустые коллекции можно задать так, и python поймет что одна список, а вторая кортеж:

empty_list = []
empty_tuple = ()

Преобразование list ⇄ tuple

Иногда нужно конвертировать один тип в другой:

l = [1, 2, 3]
t = tuple(l)
back_to_list = list(t)

Это удобно, когда вы хотите сначала сформировать данные, а затем «заморозить» их.

Порядок элементов сохраняется так как и тот и другой - упорядоченные коллекции (в отличие от множеств set, например)

Когда использовать list, а когда tuple

Используйте list, если:

  • Вам нужно изменять коллекцию (добавлять, удалять, менять элементы)
  • Вы работаете с динамическими данными
  • Нужны методы вроде append(), sort(), pop()

Используйте tuple, если:

  • Данные должны быть неизменяемыми
  • Важна производительность и экономия памяти
  • Вы используете значения как ключи в словаре
  • Нужно документировать структуру (например, координаты, RGB-цвета)

Python list и Python tuple — что выбрать?

List vs tuple
List vs tuple

Если вы не планируете менять коллекцию — выбирайте tuple. Если нужна гибкость — list. Правильный выбор между python list и python tuple сделает ваш код более читаемым, надёжным и эффективным.

Если статья была полезна — поставьте пожалуйста ей лайк! Тогда статью увидит больше читателей, а мне будет приятнее готовить для вас ещё больше полезных материалов.
Не нашли чего-то в статье? Пишите в комменты чего не хватает, и я добавлю!