pop(0) и pop(), которые выполняются за O(1) - это не обсуждалось. Понятно, что если ты используешь список как стек и снимаешь с него элементы, то ты используешь pop.
я бы вообще сказал, что удаление элемента из списка по индексу это антипаттерн, и вместо него на самом деле должен быть filter (когда мы проверяем условие для всех элементов), либо это должен быть словарь, если разные элементы имеют разное семантическое значение
Это гошный подход. Метод же что-то возвращает, так что лучше явно это показать и не путать читающего код. Просто присваиваешь в переменную, которая не будет нигде использоваться, своего рода /dev/null
А может мне не надо "мягкое удаление" (вариант с None). По аналогии в тех же множествах есть discard для "мягкого удаления". То есть сразу видно, что удаляемого элемента в множестве может не быть.
del нужен за тем, когда тебе нужен del, а не pop. Что тут спорить? "Более универсально" - это не нужно если мне нужно просто удалить элемент по индексу