Последовательности в Python поддерживают общий набор операций благодаря реализации специальных методов (magic methods). Эти операции можно разделить на несколько категорий:
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-объекта
letters = ['a', 'b', 'c']
print('b' in letters) # True
print('x' not in letters) # True
Использует метод __contains__()
print(len([1, 2, 3])) # 3
Вызывает __len__()
a = [1, 2]
b = [3, 4]
print(a + b) # [1, 2, 3, 4]
Реализуется через __add__()
print([0] * 3) # [0, 0, 0]
Использует __mul__()
или __rmul__()
Все последовательности являются итерируемыми:
for item in 'abc':
print(item) # 'a', 'b', 'c'
Работает через __iter__()
, а при его отсутствии - через __getitem__()
Общие методы для большинства последовательностей:
# Поиск элементов
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]
print([1, 2] == [1, 2]) # True
print((1, 2) < (1, 2, 3)) # True (лексикографическое сравнение)
Реализуется через __eq__()
, __lt__()
и другие методы сравнения
numbers = [5, 2, 8, 1]
print(min(numbers)) # 1
print(max(numbers)) # 8
print(sum(numbers)) # 16
a, *b, c = [1, 2, 3, 4] # a=1, b=[2, 3], c=4
Неизменяемые (str, tuple, bytes):
replace()
/upper()
возвращают новые объектыИзменяемые (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()
)Изменяемые последовательности дополнительно поддерживают операции модификации содержимого.