Дело в том что переменная это просто ссылка на объект который лежит в кеше.
В вашем коде и а и b имеют ссылку на один отдел памяти , в котором лежит ваш список
Тем самым если вы изменяете a, измениться объект на который она ссылается, а поскольку b также ссылается на этот объект, то при выводе b у вас появиться уже изменённый объект.
Чтобы исправить эту ситуацию нужно использовать либо метод copy или срезы.