Как сделать, чтобы цикл while продолжал работать дальше?

Написал код, который находит самое наибольшее число в списке и вычисляет, сколько раз к другим числам надо добавить единицу, чтобы они сравнялись. В конце выводит количество этих добавленных единиц. Но вот проблема, если в списке есть два/три/четыре и т.д "больших числа", например [1,2,3,1, 1, 3, 1, 1, 3]. То мой код доходит до первой тройки от начала и первой от конца, а то, что в середине - не видит. Понимаю, что мог изначально выбрать неверный путь решения, но очень хотелось бы получить подсказку именно в таком ключе. Заранее спасибо всем отозвавшимся)

def candies(a):
    c = len(a)
    d = []
    e = 0
    f = -1

    if c<= 1:
        print(-1)
    else:
        b = max(a)
        while a[e] < b:
            a[e]+=1
            d.append(1)
            if a[e] == b:
                e+=1
        while a[f] < b:
            a[f]+=1
            d.append(1)
            if a[f] == b:
                f-=1
        print(len(d))
candies([1, 2, 3, 1, 2, 3])

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

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

Если я правильно понял, что надо сделать, то я сделал так.

def candies(a):
    e = 0
    b = max(a)
    for i in range(len(a)):
        if len(a) <= 1:
            print(-1)
        else:
            if a[i] < b:
                while a[i] != b:
                    e += 1
                    a[i] += 1
    print(e)

candies([4, 3, 6, 7, 2, 1])

Я старался не сильно менять ваше решение. Счетчик единиц можно ввести как переменную, которая будет изменяться на 1 одновременно с добавлением единицы. Введение отдельного массива визуально нагружает код, ну и сложнее его воспринимать.

→ Ссылка
Автор решения: Николай Бруцкий-Стемпковский

Вот мой пример:

my_list = [1, 2, 3, 1, 2, 3]

candies = lambda x: sum([max(x) - num for num in x])

print(candies(my_list))

6

Можно переписать как обычную функцию и определить внутри её максимальный элемент, присвоить его переменной и выиграть еще немного в производительности.

→ Ссылка