Какие операции поддерживают большинство последовательностейpython-64

Последовательности в Python поддерживают общий набор операций благодаря реализации специальных методов (magic methods). Эти операции можно разделить на несколько категорий:

1. Базовые операции доступа

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

seq = ['a', 'b', 'c']
print(seq[0])    # 'a' (прямой индекс)
print(seq[-1])   # 'c' (отрицательный индекс)

Работает через метод __getitem__()

Срезы

nums = [0, 1, 2, 3, 4]
print(nums[1:4])     # [1, 2, 3]
print(nums[::2])     # [0, 2, 4] (шаг 2)

Реализуется тем же __getitem__() с передачей slice-объекта

2. Проверки и сравнения

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

letters = ['a', 'b', 'c']
print('b' in letters)      # True
print('x' not in letters)  # True

Использует метод __contains__()

Длина последовательности

print(len([1, 2, 3]))  # 3

Вызывает __len__()

3. Операции объединения

Конкатенация

a = [1, 2]
b = [3, 4]
print(a + b)  # [1, 2, 3, 4]

Реализуется через __add__()

Повторение

print([0] * 3)  # [0, 0, 0]

Использует __mul__() или __rmul__()

4. Итерация

Все последовательности являются итерируемыми:

for item in 'abc':
    print(item)  # 'a', 'b', 'c'

Работает через __iter__(), а при его отсутствии - через __getitem__()

5. Методы последовательностей

Общие методы для большинства последовательностей:

# Поиск элементов
lst = [10, 20, 30, 20]
print(lst.index(20))       # 1 (первое вхождение)
print(lst.count(20))       # 2 (количество вхождений)

# Для изменяемых последовательностей
lst.append(40)            # [10, 20, 30, 20, 40]
lst.extend([50, 60])      # [10, 20, 30, 20, 40, 50, 60]
lst.insert(1, 15)         # [10, 15, 20, 30, 20, 40, 50, 60]

6. Сравнение последовательностей

print([1, 2] == [1, 2])   # True
print((1, 2) < (1, 2, 3)) # True (лексикографическое сравнение)

Реализуется через __eq__(), __lt__() и другие методы сравнения

7. Минимум/Максимум/Сумма

numbers = [5, 2, 8, 1]
print(min(numbers))  # 1
print(max(numbers))  # 8
print(sum(numbers))  # 16

8. Упаковка/Распаковка

a, *b, c = [1, 2, 3, 4]  # a=1, b=[2, 3], c=4

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

  1. Неизменяемые (str, tuple, bytes):

    • Поддерживают все вышеперечисленные операции, кроме изменяющих
    • Методы типа replace()/upper() возвращают новые объекты
  2. Изменяемые (list, bytearray):

    • Дополнительно поддерживают:
      lst = [1, 2, 3]
      lst[1] = 20    # Изменение по индексу [1, 20, 3]
      del lst[0]     # Удаление [20, 3]
      lst.sort()     # Сортировка на месте
      

Резюмируем

Большинство последовательностей в Python поддерживают:

  • Индексирование и срезы
  • Проверку вхождения (in, not in)
  • Операции длины (len())
  • Конкатенацию (+) и повторение (*)
  • Итерацию в циклах
  • Базовые методы (index(), count())
  • Сравнение между последовательностями
  • Встроенные функции (min(), max(), sum())

Изменяемые последовательности дополнительно поддерживают операции модификации содержимого.