Что такое последовательностьpython-63

Последовательность (Sequence) — это один из базовых абстрактных типов в Python, который представляет собой упорядоченный набор элементов, доступ к которым осуществляется по индексам. Последовательности поддерживают операции индексирования, срезов (slicing), итерации и проверки на вхождение (membership testing).

Основные характеристики последовательностей

  1. Упорядоченность (Ordered) — элементы хранятся в определенном порядке.
  2. Индексируемость (Indexable) — доступ к элементам по целочисленным индексам (начиная с 0).
  3. Итерируемость (Iterable) — можно перебирать элементы в цикле for.
  4. Изменяемость (Mutability) — зависит от типа последовательности (изменяемые vs неизменяемые).

Типы последовательностей в Python

1. Стандартные встроенные последовательности

# Неизменяемые (immutable) последовательности
text = "Hello"          # str (строка)
numbers = (1, 2, 3)     # tuple (кортеж)
bytes_data = b'python'  # bytes (байтовая строка)

# Изменяемые (mutable) последовательности
dynamic_list = [1, 2, 3]          # list (список)
byte_array = bytearray(b'hello')  # bytearray (изменяемый массив байт)

2. Специальные последовательности в модулях

from collections import deque, Counter
from array import array

queue = deque([1, 2, 3])  # Двусторонняя очередь
counts = Counter('abracadabra')  # Подсчет элементов
int_array = array('i', [1, 2, 3])  # Типизированный массив

Основные операции с последовательностями

1. Индексирование

seq = [10, 20, 30, 40]
print(seq[0])   # 10 (первый элемент)
print(seq[-1])  # 40 (последний элемент)

2. Срезы

seq = [0, 1, 2, 3, 4, 5]
print(seq[1:4])    # [1, 2, 3]
print(seq[::2])    # [0, 2, 4] (каждый второй)
print(seq[::-1])   # [5, 4, 3, 2, 1, 0] (реверс)

3. Проверка вхождения

words = ['apple', 'banana', 'cherry']
print('banana' in words)  # True
print('pear' not in words)  # True

4. Конкатенация и повторение

a = [1, 2]
b = [3, 4]
print(a + b)  # [1, 2, 3, 4] (конкатенация)
print(a * 3)  # [1, 2, 1, 2, 1, 2] (повторение)

Абстрактные базовые классы

В модуле collections.abc определены абстрактные базовые классы для последовательностей:

from collections.abc import Sequence, MutableSequence

# Sequence требует реализацию __getitem__ и __len__
# MutableSequence добавляет __setitem__, __delitem__, append и др.

Особенности реализации

  1. Протокол последовательности — любой класс становится последовательностью, если реализует:

    • __len__() — возвращает длину
    • __getitem__() — доступ по индексу
  2. Итерация — последовательности автоматически поддерживают итерацию через __iter__().

Резюмируем

Последовательность в Python — это:

  • Упорядоченная коллекция элементов
  • Поддерживает индексирование, срезы и итерацию
  • Может быть изменяемой или неизменяемой
  • Включает встроенные типы (list, tuple, str и др.) и может быть расширена пользовательскими классами