Если порядок списка не важен, вы можете просто отсортировать список по убыванию, а затем заменить первые 3 элемента на
a = [2, 5, 8, 19, 1, 15, 7, 20, 11]
a.sort(reverse = True)
a[0] = a[0] / 2
a[1] = a[1] / 2
a[2] = a[2] / 2
Вывод
[10.0, 9.5, 7.5, 11, 8, 7, 5, 2, 1]
Если порядок важен,
import heapq
largest = heapq.nlargest(3, a)
for i in range(len(a)):
if a[i] in largest:
a[i] = a[i] / 2
Выход
[2, 5, 8, 9.5, 1, 7.5, 7, 10.0, 11]
heapq.nlargest()
- это функция heapq, которая может дать n наибольшее номера из списка. Поскольку списки в Python не имеют функции замены, список необходимо было просмотреть один раз, а затем заменить вручную. Надеюсь, что это решит вашу проблему.