Здесь
lst2 не является новым списком; это просто другая ссылка на тот же самый список, на который ссылается lst1. А это значит, что обе переменные lst1 и lst2 указывают на один и тот же объект в памятиКогда вызывается метод
lst1.pop(0), первый элемент списка удаляется, и теперь список выглядит как [2, 3]Затем, когда вызывается метод
lst2.append(4), в список добавляется элемент 4, и теперь список выглядит как [2, 3, 4]Поскольку, напомним,
lst1 и lst2 указывают на один и тот же список, любые изменения, внесённые через одну из переменных, отражаются в другой переменнойПоэтому мы и получаем
[2, 3, 4] при печати lst1