Обычный срез всегда имеет шаг один, поэтому нет никаких шансов на возникновение пробелов, и поэтому назначение может быть безопасно разрешено.

сно документации Python порасширенные ломтики:

Если у вас есть изменяемая последовательность, такая как список или массив, вы можете назначить или удалить расширенный фрагмент, но есть некоторые различия между назначением расширенного и обычного фрагментов. Присвоение регулярному срезу можно использовать для изменения длины последовательности:

>>> a = range(3)
>>> a
[0, 1, 2]
>>> a[1:3] = [4, 5, 6]
>>> a
[0, 4, 5, 6]

Расширенные ломтики не такие гибкие. При назначении расширенному слайсу список в правой части инструкции должен содержать то же количество элементов, что и заменяемый слайс:

>>> a = range(4)
>>> a
[0, 1, 2, 3]
>>> a[::2]
[0, 2]
>>> a[::2] = [0, -1]
>>> a
[0, 1, -1, 3]
>>> a[::2] = [0,1,2]
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
ValueError: attempt to assign sequence of size 3 to extended slice of size 2

Я не понимаю, почему «обычный» метод слайса работает, но «расширенный» метод слайса не работает. Что отличает «обычный» срез от «расширенного» среза и почему «расширенный» метод среза дает сбой?

Ответы на вопрос(1)

Ваш ответ на вопрос