Как вывести массив без максимального и минимального числа?
Вот мой код:
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))
Но, конечно, по читабельности, первый вариант лучше.