Замена элемента списка с последним
Дано задание следующего типа: Задать в программе список 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 ;)