MinuteX
@MinuteX
Люблю чай и играть

Переставить min и max как это сделать?

В списке все элементы различны. Поменяйте местами минимальный и максимальный элемент этого списка.

PS Сделать надо максимально просто

PSS не так :

a = [int(s) for s in input().split()]
index_of_min = 0
index_of_max = 0
for i in range(1, len(a)):
    if a[i] > a[index_of_max]:
        index_of_max = i
    if a[i] < a[index_of_min]:
        index_of_min = i
a[index_of_min], a[index_of_max] = a[index_of_max], a[index_of_min]
print(' '.join([str(i) for i in a]))

И не так

a = [int(i) for i in input().split()]
min_index = a.index(min(a))
max_index = a.index(max(a))
[a[max_index], a[min_index]] = [a[min_index], a[max_index]]
print(' '.join([str(i) for i in a]))
  • Вопрос задан
  • 1781 просмотр
Решения вопроса 1
adugin
@adugin Куратор тега Python
Например, так?
a = [{min(a): max(a), max(a): min(a)}.get(x, x) for x in a]

Ещё варианты:
a[:] = map(lambda x: min(a) if x == max(a) else max(a) if x == min(a) else x, a)

d = {min(a), max(a)}
a[:] = (sum(d) - x if x in d else x for x in a)

d = {min(a), max(a)}
a[:] = ((d & {sum(d) - x} or {x}).pop() for x in a)

from operator import itemgetter

(i_min, v_min), *_, (i_max, v_max) = sorted(enumerate(a), key=itemgetter(1))
a[i_min], a[i_max] = v_max, v_min

i_min, v_min = min(enumerate(a), key=itemgetter(1))
i_max, a[i_min] = max(enumerate(a), key=itemgetter(1))
a[i_max] = v_min
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы