arr = [1] arr[0] = arr.pop()
дает мне IndexError: индекс назначения списка вне допустимого диапазона, я не понимаю, почему?
При вызове arr.pop() он изменяет arr на [], поэтому после этого, если вы попытаетесь получить / изменить элемент с индексом 0, он выйдет за пределы диапазона, так как его размер 0
arr.pop()
arr
[]
0
Правая часть оператора присваивания оценивается перед левой частью. Таким образом, список пуст, когда вы пытаетесь назначить индекс 0.
Вы можете переписать свой код примерно так:
arr = [1] popped = arr.pop() arr[0] = popped