numbers[:] = something
называется назначением фрагмента. Он заменяет элементы в выбранном фрагменте (в данном случае весь массив) элементами справа от присваивания.
numbers = something
— это обычное присваивание, при котором числа указывают на something
.
Этот пример иллюстрирует различия:
numbers = [1, 2, 3]
something = [4, 5, 6]
numbers = something
something[0] = 10
print(numbers) # [10, 5, 6]
Обратите внимание, как мы хотели изменить список something
, но неожиданно изменили numbers
! Потому что они указывают на один и тот же список. Однако с назначением среза все обстоит иначе:
numbers = [1, 2, 3]
something = [4, 5, 6]
numbers[:] = something
something[0] = 10
print(numbers) # [4, 5, 6]
numbers
все тот же.
Как указал пользователь Tomerikoo в комментариях, размер фрагмента не обязательно должен совпадать с тем, чем он заменяется. Это означает, что справедливо следующее:
numbers = [1, 2, 3]
numbers[:] = [4, 5, 6, 7, 8, 9]
person
Ismael Padilla
schedule
21.01.2020