Ускорить код. Python

Коллеги, как можно ускорить данный код? Логика работы: Функция должна видоизменять массив таким образом, чтобы каждый индекс имел одинаковое количество значений. Вход [0,10]> Выход [5,5]

В данном исполнении получаю Execution Timed Out (12000 ms)

Необходимо вернуть не новый лист, а изменить имеющийся.

def redistribute_wealth(wealth):
    result =  [sum(wealth)/len(wealth) for x in wealth]
    wealth.clear()
    for i in range(len(result)):
        wealth.append(result[i])
    return wealth


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

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

Ваш код легко сокращается до такого:

def redistribute_wealth(wealth):
    return [sum(wealth)/len(wealth)] * len(wealth)

Если и этого будет по скорости не хватать, то можно перейти на массивы библиотеки Numpy. Единственное, что мне непонятно - зачем вам массив одинаковых значений на выходе? Это же заведомо будут одинаковые числа, зачем их плодить и тратить память? Вы можете как-то воспользоваться этим знанием, что они одинаковые.

→ Ссылка
Автор решения: Roman-Stop RU aggression in UA

Если нужно именно изменить, то нужно менять по месту:

def redistribute_wealth(wealth):
    average =  sum(wealth)/len(wealth)
    for i in range(len(wealth)):
        wealth[i] = average
    return wealth
→ Ссылка
Автор решения: SergFSM

ну если такое условие, то можно так испитониться:

from statistics import mean

def redistribute_wealth(wealth):
    wealth[::] = [mean(wealth)]*len(wealth)
    return

w = [0,10]

redistribute_wealth(w)
print(w)  # [5, 5]
→ Ссылка
Автор решения: Stanislav Volodarskiy

Заменить значения по месту без выделения дополнительной памяти и циклов:

def redistribute_wealth(wealth):
    average = sum(wealth) / len(wealth)
    wealth[:] = (average for _ in range(len(wealth)))


wealth = list(range(10))
print(id(wealth), wealth)
redistribute_wealth(wealth)
print(id(wealth), wealth)
$ python redistribute_wealth.py
140063750132736 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
140063750132736 [4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5, 4.5]
→ Ссылка
Автор решения: Fox Fox

Условие написано крайне некомфортно. Иногда сижу и думаю: автор, люди не такие умные и не умеют читать мысли. В таких мелких утилитах не надо "экономить место на экране". Больше людей привлечёт интерес к задаче. Не знаю, насколько мой вариант "быстро", но вот мой готовый скрипт:

import os

def redistribute_wealth(wealth):
    avg_wealth = sum(wealth) / len(wealth)
    wealth[:] = [avg_wealth] * len(wealth)
    return wealth

print(redistribute_wealth([0, 10]))

print("\nНажмите любую клавишу для продолжения...")
os.system("pause > nul" if os.name == "nt" else "read > /dev/null")
→ Ссылка