sequence[i:j:k] = iterable
iterable
- любой объект поддерживающий итерациюsequence
- изменяемая последовательность, list
или bytearray
,i
, j
и k
- целые числаОперация sequence[i:j:k] = iterable
позволяет заменить элементы последовательности по указанному срезу c определенным шагом содержимым итерации.
В результате, указанный срез последовательности sequence
от индекса i
до индекса j
с шагом k
заменяется содержимым итерации iterable
.
Важно! Итерация iterable
должна иметь ту же длину, что и срез последовательности sequence
, который она заменяет, иначе будет брошено исключение ValueError
Больше об индексации среза с заданным шагом читайте в операции получения среза последовательности с заданным шагом и смотрите встроенную функцию slice()
Эта операция поддерживаются изменяемыми типами последовательностей.
>>> x = [1, 4, 7, 10, 13, 16, 19] >>> x[1:6:2] = [0, 0, 0] >>> x # [1, 0, 7, 0, 13, 0, 19] >>> x[0::3] = ['one', 'two', 'three'] >>> x # ['one', 0, 7, 'two', 13, 0, 'three'] >>> x[::-3] = ['one', 'two', 'three'] >>> x # ['three', 0, 7, 'two', 13, 0, 'one'] # Длина среза последовательности # отличается от длины списка >>> x[1:5:3] = [100, 101, 102] # Traceback (most recent call last): # File "<stdin>", line 1, in <module> # ValueError: attempt to assign sequence of size 3 to extended slice of size 2 >>> x[1:5:3] # [0, 13] >>> len(x[1:5:3]) == len([100, 101, 102]) # False