Сообщить об ошибке.

Изменение элементов списка по срезу c шагом

Синтаксис:

sequence[i:j:k] = iterable

Параметры:

Результат:

  • изменение части элементов последовательности

Описание:

Операция sequence[i:j:k] = iterable позволяет заменить элементы последовательности по указанному срезу c определенным шагом содержимым итерации.

В результате, указанный срез последовательности sequence от индекса i до индекса j с шагом k заменяется содержимым итерации iterable.

Важно! Итерация iterable должна иметь ту же длину, что и срез последовательности sequence, который она заменяет, иначе будет брошено исключение ValueError

Больше об индексации среза с заданным шагом читайте в операции получения среза последовательности с заданным шагом и смотрите встроенную функцию slice()

Эта операция поддерживаются изменяемыми типами последовательностей.

Примеры изменения части списка срезом c заданным шагом.

>>> 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