Список Python проти кортежів (з прикладами)

У цій статті ми дізнаємося про ключові відмінності між списком та кортежами та про те, як використовувати ці дві структури даних.

Списки та кортежі зберігають один або кілька об’єктів або значень у певному порядку. Об'єкти, що зберігаються у списку або кортежі, можуть бути будь-якого типу, включаючи тип нічого, визначений ключовим словом None.

Списки та кортежі схожі в більшості контекстів, але є деякі відмінності, які ми збираємось знайти в цій статті.

Синтаксичні відмінності

Синтаксис списку та кортежу дещо відрізняється. Списки оточені квадратними дужками, ()а Кортежі - дужками ().

Приклад 1.1: Створення списку проти створення кортежу

 list_num = (1,2,3,4) tup_num = (1,2,3,4) print(list_num) print(tup_num)

Вихід:

 (1,2,3,4) (1,2,3,4)

Вище ми визначили змінну з назвою list_num, яка містить список чисел від 1до 4. Список оточений дужками (). Також ми визначили змінну tup_num; який містить кортеж числа від 1до 4. Кортеж оточений дужками ().

У python ми маємо type()функцію, яка дає тип створеного об'єкта.

Приклад 1.2: Знайдіть тип структури даних за допомогою функції type ()

 type(list_num) type(tup_num)

Вихід:

 список кортежу

Перемінний список проти незмінних кортежів

Список має змінний характер, тобто список може бути змінений або модифікований після його створення відповідно до потреб, тоді як кортеж має незмінний характер, тобто кортеж не може бути змінений або змінений після його створення.

Приклад 2.1: Змінення списку елементів порівняно з кортежем

 list_num(2) = 5 print(list_num) tup_num(2) = 5

Вихід:

 (1,2,5,4) Відстеження (останній останній дзвінок): Файл "python", рядок 6, у TypeError: об'єкт "кортеж" не підтримує призначення елементів

У наведеному вище коді ми призначили 5list_num за індексом, 2і ми знайшли 5за індексом 2на виході. Крім того, ми призначили 5tup_num за індексом 2і отримали type error. Ми не можемо змінити кортеж через його незмінну природу.

Примітка: Оскільки кортеж є незмінним, вони мають фіксований розмір, а список змінних розмірів.

Доступні операції

Списки мають більше вбудованих функцій, ніж функції кортежу. Ми можемо використовувати dir((object))вбудовану функцію, щоб отримати всі пов'язані функції для списку та кортежу.

Приклад 3.1: Каталог списків

 dir(list_num)

Вихід:

('__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribuit__', '__get __gt__ ',' __hash__ ',' __iadd__ ',' __imul__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __ne__ ',' , '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'додай', 'додай', 'додай', 'додай' copy ',' count ',' extension ',' index ','вставити ',' поп ',' вилучити ',' повернути назад ',' сортувати ')

Приклад 3.2: Каталог кортежів

 dir(tup_num)

Вихід:

 ('__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__get', __get ', __gt__ ',' __hash__ ',' __init__ ',' __init_subclass__ ',' __iter__ ',' __le__ ',' __len__ ',' __lt__ ',' __mul__ ',' __ne__ ',' __new__ ',' __reduce__ ', _______ , '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index')

Ми чітко бачимо, що існує так багато додаткових функцій, пов’язаних зі списком над кортежем. Ми можемо виконувати операцію вставки та виведення, видаляючи та сортуючи елементи зі списку із вбудованими функціями, які недоступні у Tuple.

Порівняння розмірів

Операція кортежів має менший розмір, ніж у списку, що робить її трохи швидшою, але не так вже й багато про що згадувати, поки у вас не буде величезна кількість елементів.

Приклад 5.1: Розрахувати розмір списку порівняно з кортежем

 a= (1,2,3,4,5,6,7,8,9,0) b= (1,2,3,4,5,6,7,8,9,0) print('a=',a.__sizeof__()) print('b=',b.__sizeof__())

Вихід:

 a = 104 b = 120

У наведеному вище коді ми маємо кортеж a і список b з однаковими елементами, але розмір кортежу менше, ніж список.

Різні випадки використання

На перший погляд може здатися, що списки завжди можуть замінити кортежі. Але кортежі - надзвичайно корисні структури даних

  1. Використання кортежу замість списку може дати програмісту та інтерпретатору натяк на те, що дані не слід змінювати.
  2. Кортежі зазвичай використовуються як еквівалент словника без ключів для зберігання даних. Наприклад,
     (('Риба-меч', 'Домінік Сена', 2001), ('Сноуден', 'Олівер Стоун', 2016), ('Водій таксі', 'Мартін Скорсезе', 1976))
    Наведений вище приклад містить кортежі всередині списку, який містить список фільмів.
  3. Читання даних стає простішим, коли кортежі зберігаються всередині списку. Наприклад,
     ((2,4), (5,7), (3,8), (5,9))
    читається легше, ніж
     ((2,4), (5,7), (3,8), (5,9))

Кортеж також може використовуватися як ключ у словнику через їх хешируемий і незмінний характер, тоді як Списки не використовуються як ключ у словнику, оскільки список не може оброблятись __hash__()і має змінний характер.

 key_val= (('alpha','bravo'):123) #Valid key_val = (('alpha','bravo'):123) #Invalid 

Основні моменти, які слід пам’ятати:

  1. Буквальний синтаксис кортежів відображається в дужках, ()тоді як літеральний синтаксис списків - у квадратних дужках ().
  2. Списки мають змінну довжину, кортеж має фіксовану довжину.
  3. Список має змінну природу, кортеж має незмінну природу.
  4. Список має більше функціональних можливостей, ніж кортеж.

Цікаві статті...