Замена элемента списка с последним

Дано задание следующего типа: Задать в программе список X, состоящий из 10 целых чисел. Найти максимальный из отрицательных элементов списка и поменять его местами с последним. Максимально отрицательное я нашел, а вот как сделать так, чтобы это число(максимально отрицательное) менялось местами с последним?

import random

s = []
maxot = -10**10

for i in range(10):
    s.append(int(input('Введите любое число: \n')))
    if s[i] < 0 and s[i] > maxot:
        maxot = s[i]
print(s)
print('Максимально отрицательное число: \n')
print(maxot)

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

Автор решения: Jack_oS

Поменять местами элементы в списке можно зная их индексы. Последний элемент имеет индекс -1, а max_negative_index сохраните в цикле рядом с maxot:

# import random

s = []
# maxot = -10**10
maxot = float('-inf')
max_negative_index = 0

for i in range(10):
    s.append(int(input('Введите любое числа: \n')))
    # if s[i] < 0 and s[i] > maxot:
    if maxot < s[i] < 0:
        maxot = s[i]
        max_negative_index = i

print(s)
print('Максимально отрицательное число: \n')
print(maxot)

# меняем местами последний элемент с наибольшим из отрицательных элементов
s[-1], s[max_negative_index] = s[max_negative_index], s[-1]
print(s)

Вывод:

[1, -2, 3, -4, 5, -7, 8, -9, 42, 13]
Максимально отрицательное число: 
-2
[1, 13, 3, -4, 5, -7, 8, -9, 42, -2]

PS maxot = float('-inf') лучше, чем maxot = -10**10; иif maxot < s[i] < 0 нагляднее, чем if s[i] < 0 and s[i] > maxot ;)

→ Ссылка