Содержание страницы
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
2 Comments