Разница между списком и кортежем. Python List vs. Tuple

difference between list and tuple in python

Python List vs. Tuple

В этой статье будет рассмотрена разница между списком и кортежем (List vs. Tuple).

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

Важные различия между List и Tuple в Python

List (список)Tuple (Кортеж)
1Списки изменяемыКортежи неизменны
2Последствия итераций отнимают много времениПоследствия итераций сравнительно быстрее
3Список лучше подходит для выполнения операций, таких как вставка и удаление.Тип данных Tuple подходит для доступа к элементам
4Списки потребляют больше памятиКортеж потребляет меньше памяти по сравнению со списком
5Списки имеют несколько встроенных методов.Tuple не имеет большого количества встроенных методов.
6Более вероятны непредвиденные изменения и ошибкиВ кортеже это трудно осуществить.

Список против кортежа

Проверим, являются ли кортежи неизменяемыми, а список изменяемым
Здесь мы собираемся сравнить тест изменчивости списка и кортежа.

# Creating a List with
# the use of Numbers
# code to test that tuples are mutable
List = [1, 2, 4, 4, 3, 3, 3, 6, 5]
print("Original list ", List)
 
List[3] = 77
print("Example to show mutablity ", List)

Результат выполнения кода:

Исходный список [1, 2, 4, 4, 3, 3, 3, 6, 5] 
Пример для демонстрации изменчивости [1, 2, 4, 77, 3, 3, 3, 6, 5]

Пример с кортежем: далее мы увидим, что кортеж не может быть изменен.

tuple1 = (0, 1, 2, 3)
tuple1[0] = 4
print(tuple1)

Результат выполнения кода:

Traceback (most recent call last):
  File "tuple_example.py", line 3, in
    tuple1[0]=4
TypeError: 'tuple' object does not support item assignment

Проверка эффективности работы кортежей с памятью

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

import sys
a_list = []
a_tuple = ()
a_list = ["Lemons", "And", "Apples"]
a_tuple = ("Lemons", "And", "Apples")
print(sys.getsizeof(a_list))
print(sys.getsizeof(a_tuple))

Результат выполнения кода:

120
64

Проверка скорости итераций в Tuple по сравнению с List

import sys, platform
import time
 
l=list(range(100000001))
t=tuple(range(100000001))
 
start = time.time_ns()
for i in range(len(t)):
    a = t[i]
end = time.time_ns()
print("Total lookup time for Tuple: ", end - start)
 
start = time.time_ns()
for i in range(len(l)):
    a = l[i]
end = time.time_ns()
print("Total lookup time for LIST: ", end - start)

Результат выполнения кода:

Общее время поиска для Tuple: 7038208700 
Общее время поиска для LIST: 19646516700

0 0 голоса
Рейтинг статьи
Шамаев Иван
Разработчик аналитических решений QlikView/Qlik Sense/Power BI; Python Data Scientist; Разработчик интеграционных решений на PHP, Python, JavaScript.
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x