Как вывести массив без максимального и минимального числа?

Вот мой код:

A, B, C, D = map(int, input().split())
d = [A, B, C, D]
K = max(d)
L = min(d)

теоретически макс. число - А, мин. число - В Как теперь получить список без них?


Ответы (3 шт):

Автор решения: Эникейщик
d.remove(K)
d.remove(L)

Но удаляется только первое вхождение, поэтому если есть вероятность, что макс/мин встречается больше одного раза, придется применить какуй-нибудь костыль. Например, такой:

while K in d:
    d.remove(K)

Или еще какой-нибудь.

Или так еще в одну строчку

d = [num for num in d if (num != K and num != L)]
→ Ссылка
Автор решения: HardTaker
list = [3, 6, 1, 8] #создаём список с n количеством чисел
list.sort() #сортирует список от младшего к старшему
list.pop(0) #удаляем первый элемент
list.pop() #удаляем последний элемент
print(list) #выводим список на экран

Или если необходимо удалить не только макс и мин, но и их дубли:

list = [3, 7, 5, 2, 4, 3, 2, 9, 6, 8, 8, 9]
list.sort()
a = list[0]
b = list[len(list) - 1]
ind_a = 0
ind_b = 0
for n in list:
    if n == a:
        ind_a += 1
for m in list:
    if m == b:
        ind_b += 1
for o in range(ind_a):
    list.pop(0)
for p in range(ind_b):
    list.pop()
print(list)
→ Ссылка
Автор решения: TigerTV.ru

Используем filter:

*res, = filter(lambda x: x != K and x != L, d)
print(res)

или так:

*res, = filter(L.__ne__, filter(K.__ne__, d))

Но, конечно, по читабельности, первый вариант лучше.

→ Ссылка