Аналогично использованию this[0] = something
, вы также можете указать кусочки:
>>> x = [1, 2, 3, 4]
>>> x[1:3] = [0, 0]
>>> x
[1, 0, 0, 4]
Поскольку в срезах могут отсутствовать части (начало, остановка или шаг), вы можете изменить весь список следующим образом:
>>> x = [1, 2, 3, 4]
>>> x[:] = [4, 5, 6]
>>> x
[4, 5, 6]
Это (как видно выше) способно изменить даже длину списка. Как видно ниже, это действительно изменяет реальный объект, а не переопределяет переменную:
>>> x = [1, 2, 3, 4]
>>> y = x
>>> x[:] = [3, 4]
>>> y
[3, 4]
Это не обязательно должен быть список в правом конце задания. Все, что можно повторить, может быть на этой стороне. На самом деле, вы могли бы даже иметь генератор:
>>> x = ["1", "2", "3", "4"]
>>> x[:] = (int(y) for y in x)
>>> x
[1, 2, 3, 4]
или возврат map()
(список в Python 2; объект map
в Python 3):
>>> x = ["1", "2", "3", "4"]
>>> x[:] = map(int, x)