В чем разница между списком и кортежем?

Опубликовано: 2021-11-28

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

В этой статье мы рассмотрим основные различия между списком и кортежем и рассмотрим варианты их использования. Но сначала давайте кратко рассмотрим основные сходства между ними:

  • Вы можете хранить элементы и объекты всех типов данных как в кортежах, так и в списках.
  • И кортеж, и список позволяют получить доступ к данным, используя их соответствующий индекс.
  • Оба эти типа данных могут компилировать и каталогизировать различные элементы данных.

Оглавление

Кортеж Python против списка

1. Различия в синтаксисе

Объявление списков и кортежей в Python неизменно отличается. Списки объявляются с использованием квадратных скобок '[]', тогда как объявление кортежей выполняется с использованием '()'.

Вот пример, чтобы лучше понять, как объявлять списки и кортежи в Python.

номер_списка = [7,8,9,10]

tup_num = (10,11,13,14)

печать (номер_списка)

печать (tup_num)

Выход этой последовательности будет.

[7,8,9,10]

(10,11,13,14)

В этом примере определена переменная с именем list_num, которая содержит числа от 7 до 10. Мы также видим, что вывод заключен в квадратные скобки. Однако переменная, определенная как tup_num и содержащая числа от 10 до 14, отображает вывод с использованием круглых скобок.

Python использует функцию type(), которая помогает нам понять тип созданных элементов.

печать (тип (tup_num))

печать (тип (list_num))

Выход:

<класс 'кортеж'>

<класс 'список'>

2. Изменчивость (изменяемый или неизменяемый)

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

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

3. Изменение объекта (список или кортеж)

Выясним, что происходит, когда создается попытка внести изменение в список.

имя = [алекс, рик, мартин]

имя [0] = «Рокси»

Примечание : первый элемент всегда обозначается как 0, а не 1.

Теперь давайте посмотрим, как будет выглядеть вывод после следующей команды:

>>>имя

Выход:

[Рокси, Рик, Мартин]

Вывод показывает, как изменился самый первый элемент в списке.

Теперь давайте посмотрим, каков был бы результат, если бы использовался кортеж.

имя = (Алекс, Рик, Мартин)

Когда элемент в кортеже изменяется с помощью

имя (0) = «Рокси»

Вывод будет:

TypeError: объект 'tuple' не поддерживает назначение элементов.

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

4. Копии против повторного использования

Нельзя копировать кортежи. Причиной здесь является неизменяемый характер кортежей. Например, если вы запустите кортеж (tup_name), вы увидите, что он был восстановлен сам по себе.

Пример:

имена = («Аллен», «Сири», «Михаэла»)

copyNames = кортеж (имена)

print(names is copyNames)

Вывод здесь будет — «Истина».

Наоборот, если вы попытаетесь сделать то же самое для списка (как показано в примере):

Пример:

имена = ["Аллен", "Сири" и "Михаэла"]

copyNames = список (имена)

print(names is copyNames)

Вывод будет показан как «false».

Вам нужно будет скопировать и вставить полные имена в новый список для истинного вывода.

5. Кортеж Python против списка | Различия в размерах

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

6. Гетерогенный против гомогенного

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

Однако это лишь семантическая разница. Например, в списках могут храниться данные различных типов, а в кортежах также могут храниться данные одного и того же типа.

Пример:

list_elements = ['аллен', 20, 'мэри']

tuple_elements = («Аллен», «Мэри», «Алекс»)

Код будет работать без проблем, даже если список содержит комбинацию чисел и строк.

7. Различия в длине

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

Пример:

list_names = ['Аллен', 'Мэри', 'Алекс']

list_names.append («Рокси»)

печать (список_имен)

Выход:

['Аллен','Мэри','Алекс','Рокси']

Точного вывода можно было бы добиться и с помощью функции insert() вместо функции append(), если речь идет о списках.

Однако кортежная структура данных не дает нам никаких способов изменить ее размер.

8. Варианты использования

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

Кортежи гораздо более важны как структуры данных по сравнению со списками, потому что:

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

Неизменяемый и хэшируемый характер кортежей делает их прекрасной заменой словарям. С другой стороны, вы не можете использовать списки для замены словарей, потому что они не поддерживают функцию _hash_().

Пример:

key_val= {('алекс', 'храбрый'):124} #Действительно

key_val = {['Алекс', 'храбрый']:124} #Недействительно

9. Вложенные списки и кортежи

Кортежи и списки могут храниться друг в друге. Вложенные кортежи могут содержать больше кортежей. Точно так же вложенные списки также могут иметь больше списков.

10. Отладка

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

11. Функции и операции

В Python есть несколько полезных функций, которые можно применять к кортежам и спискам, например, отсортировано, суммировано, все, мин, макс, бережливо и т. д.

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

Ключевые выводы

  • У кортежей меньше функций, чем у списков.
  • Структура кортежа неизменна, тогда как структура списков изменчива.
  • Кортежи имеют фиксированную длину, тогда как длина списков может варьироваться.
  • Синтаксис списка представлен квадратными скобками «[]», тогда как синтаксис кортежей представлен в виде скобок «()».
  • Кортежи потребляют меньше памяти по сравнению со списками.
  • Структура данных кортежа лучше всего подходит для доступа к элементам.
  • Список функций лучше подходит для выполнения конкретных операций удаления и вставки.
  • Итерации для кортежей выполняются быстрее, чем для списков.
  • В списке может быть несколько встроенных методов, а в кортеже их нет.

Узнайте подробно о мельчайших подробностях Python и его передовых концепциях через 18-месячную программу магистра наук в области науки о данных upGrad. программа в сотрудничестве с Ливерпульским университетом Джона Мура и IIIT Bangalore. Имея в своем распоряжении лучший в отрасли преподавательский состав, более 500 часов учебных материалов и классы по разрешению сомнений, у студентов есть шанс освоить Python и другие основы науки о данных, чтобы соответствующим образом управлять своей карьерой. Кроме того, программа помогает развивать навыки работы с более чем 14 языками и инструментами, такими как Tableau, MySQL, Excel, MongoDB и другими.

Итак, не стесняйтесь. Свяжитесь с нами сегодня!

Когда использовать кортежи или списки?

Если вам нужно, чтобы ваши элементы данных были доступны только для чтения, вам следует использовать кортежи. Данные в кортежах остаются постоянными из-за их гарантированной доступности никогда не меняющихся данных.

Списки, однако, очень изменчивы. Следовательно, данные в них всегда можно изменить. Перемещение, переключение, удаление и добавление элементов в список очень гибкие. Их лучше всего использовать, когда данные требуют модификации на более поздних этапах программного цикла.

Кортежи быстрее по сравнению со списками?

Да, создание кортежа занимает гораздо меньше времени, чем создание списка. При составлении списков требуется доступ более чем к одному блоку памяти. Это связано с тем, что элементы в кортежах нельзя удалять и заменять, а признаки в списках могут изменяться несколько раз в течение цикла программы.

Где кортежи и списки используются в реальной жизни?

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