В чем отличие списка от кортежа

Списки – это изменяемые последовательности, обычно используемые для хранения однотипных данных (хотя Python не запрещает хранить в них данные разных типов). Представлены классом list.

Кортежи – это неизменяемые последовательности, обычно используемые, чтобы хранить разнотипные данные. Представлены классом tuple.

На уровне языка отличаются тем, что в кортеж нельзя добавить или убрать элемент. На уровне интерпретатора различий нет. Обе коллекции представлены массивом указателей на структуру PyObject.

Для списка определены функции, которые добавляют в такой массив новый элемент, удаляют имеющийся, соединяют два массива в один. Они вызываются методами списка .append().pop().sort() и т.д.

Oct. 10, 2023, Источник

  • Список изменяемый, а кортеж — нет
  • Кортеж может выступать в качестве ключа в словаре или элементам множества
  • Кортеж занимает меньше места в памяти, т.к. имеет фиксированную длину
a = (1, 2, 3, 4, 5, 6)
b = [1, 2, 3, 4, 5, 6]

print(a.__sizeof__()) # 72
print(b.__sizeof__()) # 88
  • Кортеж работает быстрее списка, из-за особенностей хранения в памяти. Для того, чтобы снизить фрагментацию памяти и ускорить создание кортежей, Python переиспользует старые кортежи, которые были удалены. Если кортеж состоит из менее чем 20 элементов и больше не используется, то вместо удаления Python помещает его в специальный список, в котором хранятся свободные для повторного использования кортежи
  • Кортежи поддерживают неограниченный уровень вложенности
  • Пустой кортеж работает как синглтон, т.е. в памяти запущенного Python скрипта всегда находится только один пустой кортеж. Все пустые кортежи просто ссылаются на один и тот же объект, это возможно благодаря тому, что кортежи неизменяемы. Такой подход сохраняет много памяти и ускоряет процесс работы с пустыми кортежами.

Oct. 10, 2023, Источник

Списки Python схожи с массивами в других языках. Кортеж похож на список, но вы создаете его с круглыми скобками, вместо квадратных. Вы также можете использовать встроенный инструмент для создания кортежей. Разница между списками и кортежами в том, что кортеж неизменяем, в то время как список изменяем. Т.е. в список можно добавить элемент и его адрес в памяти не изменится, а если нужно добавить элемент в кортеж, то нужно создать новый кортеж, и у него уже будет новый адрес в памяти:

# список
a = [1,2]
id(a) # 2044364987904
a.append(3)
id(a) # 2044364987904

# кортеж
a = (1,2)
id(a) # 2044370285184
a = (1,2,3)
id(a) # 2044369999872

Важно: кортеж занимает меньше места в памяти чем список, и поэтому всегда, когда массив объектов заведомо неизменяем, рекомендуется использовать кортежи, вместо списков.

Oct. 10, 2023, Источник

Список (list) и кортеж (tuple) - это две различные структуры данных, которые обладают следующими основными различиями:

1. Изменяемость:

  • Списки изменяемы, что означает, что их элементы могут быть изменены после создания списка.
  • Кортежи неизменяемы, их элементы не могут быть изменены после создания кортежа.

2. Синтаксис:

  • Списки создаются с использованием квадратных скобок `[ ]`, например: `[1, 2, 3]`.
  • Кортежи создаются с использованием круглых скобок `( )`, например: `(1, 2, 3)`.

3. Производительность:
   - В общем случае, кортежи работают быстрее, чем списки, потому что они неизменяемы и Python может проводить оптимизации, которые не доступны для списков.

4. Использование:

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

Пример использования списков:

my_list = [1, 2, 3]
my_list.append(4)
print(my_list)  # Вывод: [1, 2, 3, 4]

 

Пример использования кортежей:

my_tuple = (1, 2, 3)
# my_tuple[0] = 5  # Это вызовет ошибку, так как кортежи неизменяемы
print(my_tuple)  # Вывод: (1, 2, 3)

Если ваши данные должны оставаться неизменными, лучше использовать кортежи. Если вам нужна изменяемость, используйте списки.

Feb. 16, 2024, easyoffer