Перейти до основного вмісту
Модуль 3 · Урок 2 із 410/36 у курсі~10 min
Модульні уроки (2/4)

Кортежі та розпакування

Кортеж — це впорядкована та незмінна послідовність: після створення ви можете більше не змінювати його елементи. Пишеться в дужках (хоча що насправді визначає це кома).

Створення кортежу

Python
vuota = ()
una = (42,)             # ATTENZIONE: senza virgola, (42) è solo 42 fra parentesi
coords = (10, 20)
mista = ("Ada", 36, True)

Доступ за індексом і нарізка працюють так само, як і для списків: coords[0], coords[-1], mista[:2].

Коли використовувати кортеж замість списку

  • Коли значення представляє фіксовану колекцію, яка не повинна змінюватися (координати, дата як (year, month, day), версія (1, 2, 3)).
  • Коли вам потрібно використовувати значення як словниковий ключ або як елемент a set: можна використовувати лише незмінні (хешовані) об’єкти.
  • Коли ви хочете повідомити читачеві коду, що це значення є "заморожений".

Розпакування: функція, яка змінює спосіб написання Python

Python
nome, anni = ("Ada", 36)
nome   # 'Ada'
anni   # 36

Він також працює без дужок (це кома, яка визначає кортеж):

Python
x, y = 10, 20

І це дозволяє замінювати без тимчасової змінної, чистий Python ідіома:

Python
a, b = 1, 2
a, b = b, a
a, b   # (2, 1)

Розпакування за допомогою * (решта)

Коли ви хочете зафіксувати «першого та решту» або «першого, останнього, середина":

Python
primo, *resto = [1, 2, 3, 4, 5]
primo   # 1
resto   # [2, 3, 4, 5]

primo, *centro, ultimo = [1, 2, 3, 4, 5]
centro  # [2, 3, 4]

Це називається присвоєнням із зірочкою: зірка збирає все, що залишається в списку.

Одноелементна пастка кортежу

(42) — це не кортеж, це число 42 у круглих дужках. Щоб зробити a для одноелементного кортежу потрібна кома: (42,). Без нього ніяка операція не вдається заплутаним чином.

Python
x = (42)
type(x)   # <class 'int'>
x = (42,)
type(x)   # <class 'tuple'>

Одноелементні кортежі

Щоб створити кортеж, що містить лише один елемент, одних дужок недостатньо: ви повинні вставити кінцеву кому, наприклад t = (42,). Без коми Python сприймає круглі дужки як просте математичне групування, створюючи звичайне ціле число 42.

Спробуйте

вправи#python.m3.l2.e1
Спроби: 0Завантаження…

Якщо задано `a = 1` і `b = 2`, поміняйте їх значення в одному рядку (розпакування кортежу) і обчисліть кортеж (a, b).

Завантаження редактора…
Показати підказку

a, b = b, a

Рішення доступне після 3 спроб

Повторна вправа

вправи#python.m3.l2.e2
Спроби: 0Завантаження…

Зі списку `voti = [7, 5, 8, 6, 9]` скористайтеся розпакуванням, щоб витягти перший клас у `primo`, останній — у `ultimo`, а решта — у `centro`. Оцініть `(primo, centro, ultimo)`.

Завантаження редактора…
Показати підказку

primo, *centro, ultimo = voti → primo=7, centro=[5,8,6], ultimo=9.

Рішення доступне після 3 спроб

Додатковий виклик

вправи#python.m3.l2.e3
Спроби: 0Завантаження…

Given the tuple `point = (4, 5, 6)`, use unpacking to assign the three values to the variables `x`, `y`, `z` respectively. Then, calculate the sum of `x`, `y`, and `z` and store it in `coord_sum`. Finally, evaluate `coord_sum`.

Завантаження редактора…
Показати підказку

Використовуйте x, y, z = point, щоб отримати три координати в одному операторі.

Рішення доступне після 3 спроб