Как работает нотация срезов в Python? То есть: когда я пишу код типа a[x:y:z], a[:], a[::2] и т. д., как я могу понять, какие элементы попадают в срез?
См. Почему срез и верхняя граница диапазона являются эксклюзивными? чтобы узнать, почему xs[0:2] == [xs[0], xs[1], not [..., xs[2]].
См. раздел Создание нового списка, содержащего каждый N-й элемент исходного списка для xs[::N].
См. Как присваивание работает с фрагментами списка? чтобы узнать, что делает xs[0:2] = ["a", "b"].
Подробнее здесь: https://stackoverflow.com/questions/509 ... thon-works