Перейти до змісту

Послідовності в Python

Послідовність в Python — ітерабельний об'єкт, який підтримує ефективний доступ до елементів за допомогою цілочислених індексів через спеціальний метод `__getitem__() і підтримує метод __len__(), який повертає довжину послідовності.

До основних вбудованих типів послідовностей відносяться:

  • list
  • tuple
  • range
  • str
  • bytes
  • bytearray

Послідовності також опціонально можуть реалізовувати методи count(), index(), __contains__(), __reversed__() та інші.

Операції, які підтримуються більшістю послідовностей:

операція опис
x in s, x not in s Чи знаходиться елемент x в послідовності s (для рядків та послідовностей байтів — чи є x підрядком s)
s + t Конкатенація послідовностей
s * n, n * s Конкатенація n нерекурсивних копій послідовності s
s[i] i-й елемент послідовності s
s[i:j] Зрізання послідовності s від i до j.
s[i:j:k] Зрізання послідовності s від i до j з кроком k
len(s) Довжина послідовності
min(s) Мінімальний елемент послідовності
max(s) Максимальний елемент послідовності
s.index(x[, i[, j]]) індекс першого входження x (опціонально – починаючи з позиції i и до позиции j)
s.count(x) загальна кількість вхождень x в s
sum(s) сума елементів послідовності

Більшість мутабельних послідовностей підтримують наступні операції:

операція опис
s[i] = x елемент з ідексом i замінюється на x
s[i:j] = t, s[i:j:k] = t елементи з індексами від i до j (з кроком k) замінюються вмістом ітерабельного об'єкта t
del s[i:j], del s[i:j:k] видалення відповідних елементів з послідовності
s.append(x) додавання x в кінець послідовності
s.clear() видалення усіх елементів послідовності
s.copy() нерекурсивна копія послідовності
s.extend(t) додавання усіх елементів ітерабельного об'єкта в кінець послідовності
s.insert(i, x) вставка елемента x по індексу i
s.pop(), s.pop(i) повернення значення по індексу i (за умовчанням – останній елемент) і видаленя його з послідовності
s.remove(x) видалення першого входження x
s.reverse() розворот послідовності у зворотньому порядку

Індексація

obj[index]

index — або ціле число (власне індекс елемента списку), або ж зрізання — об'єкт класа slice:

>>> l=[1,2,3,4,5,6]
>>> s = slice(1, -1, 2)
>>> l[s]
[2, 4]
>>> l[1:-1:2]
[2, 4]
>>>

Множення на скаляр

s * n

Конкатенація n неповних копій послідовності s.

Неповна копія (shallow copy) — копіюється сам контейнер, а вміст копіюється як посилання на його елементи.

Повна копія (deep copy) — при копіюванні рекурсивно копіюються і усі елементи списка.

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

Back to top