Sobes.tech
Back to questions
Junior — Middle
65

Какое отличие между объектами типа Sequence и Iterable в Python?

Answer from AI

sobes.tech AI

В Python Iterable — это любой объект, по которому можно итерироваться, то есть получить итератор с помощью функции iter(). Примером iterable может быть список, кортеж, строка, словарь и даже файл.

Sequence — это подтип iterable, который поддерживает упорядоченный доступ к элементам по индексу и обычно имеет фиксированную последовательность элементов. Последовательности реализуют методы __getitem__ и __len__, что позволяет обращаться к элементам по индексу и узнавать длину.

Иными словами:

  • Все объекты типа Sequence являются Iterable.
  • Не все Iterable являются Sequence (например, множества и генераторы — iterable, но не sequence).

Пример:

from collections.abc import Iterable, Sequence

print(issubclass(list, Iterable))   # True
print(issubclass(list, Sequence))   # True
print(issubclass(set, Iterable))    # True
print(issubclass(set, Sequence))    # False

Таким образом, Sequence — это упорядоченный и индексируемый iterable.