Содржина на објавата
Срез это довольно удобная штука для получения определённого диапазона элементов из списка. Но срезы не так просты как кажется, их можно использовать и для изменения оригинального списка так же как мы это делаем просто по индексу. Для примера возьмем простой список ls = [1, 2, 3, 4, 6] И поехали! >>> ls[-1] = 5 [1, 2, 3, 4, 5] Обычное изменение по индексу. >>> ls[2:4] [3, 4] Обычный срез который создаёт новый список на основе старого. >>> ls[::-1] [5, 4, 3, 2, 1] Реверс списка, тоже создаёт новый. Оригинальный список остался без изменений. Воспользуемся оператором присвоения: >>> ls[2:4] = [7, 8] [1, 2, 7, 8, 5] Заменили диапазон элементов в оригинальном списке. >>> ls[4:] = [0, 0, 0, 0] [1, 2, 7, 8, 0, 0, 0, 0] Указав диапазон сверх имеющегося мы расширили список по аналогии с методом extend(), но при этом еще и немного захватили конец списка. Всё это в одно действие! >>> ls[:0] = [9, 8, 7] [9, 8, 7, 1, 2, 7, 8, 0, 0, 0, 0] Добавили элементы в начало >>> del ls[-4:] [9, 8, 7, 1, 2, 7, 8] Удалили часть элементов списка >>> ls[1:3] = [] [9, 1, 2, 7, 8] Еще один способ удалить элементы >>> ls[:] = [] А этим способом можно пользоваться для очистки списка в Python2, в котором еще не было метода clear(). Кажется мы "потратили" весь наш список))) Сделаем новый и продолжим. >>> ls = [1, 2, 3, 4, 5, 6] >>> ls[::2] = [7,8,9] [7, 2, 8, 4, 9, 6] И конечно же мы можем использовать шаг в срезе, но тут требуется соблюдать количество подаваемых элементов. Заменять элементы с каким-то шагом можно, а добавлять нельзя. s = slice(3, 4) Как было показано ранее, срез можно сохранять как переменную и использовать в дальнейших манипуляциях >>> ls[s] = [0]*5 [7, 2, 8, 0, 0, 0, 0, 0, 9, 6] Заменили один элемент на несколько элементов, расширив исходный список из центра. И напоследок. Следующие два действия равнозначны и дадут одинаковый результат — полная замена списка. >>> ls[:] = [1,2,3,4] >>> ls = [1,2,3,4] #tricks