Nightpoison Ответов: 2

Сумма функции над серьезным числом Python


скажем, у меня есть функция f(x), где x равно n^2. и скажем, я хотел суммировать результат n^ для диапазона от 1 до 10.

Есть ли в python что-то похожее на mathmatica, что позволило бы мне передать математическую функцию и суммировать результаты, или я ограничен циклом for

Что я уже пробовал:

так что что-то вроде

for n in range(1, 10):
    result += (n**2)

2 Ответов

Рейтинг:
6

CPallini

Да.

result = functools.reduce(lambda a,b: a + b*b, range(1,11))

Смотрите, например: Функциональные методические указания Программирование — документация на Python 3.8.0 [^].


Richard MacCutchan

Я жульничал и пользовался Гуглом. :)

CPallini

Великие умы мыслят одинаково :-) Я не кодер Python,

Nightpoison

насколько я понимаю, ламды-это очень эффективный инструмент. Хотя я никогда не упоминал об эффективности как о предпосылке, я должен был это сделать. Но вы ответили на мой вопрос.

Лично я не тратил много времени на изучение лямбда-функций.

Рейтинг:
1

Richard MacCutchan

Попробуй вот это, где sum() функция принимает список.

result = sum([x**2 for x in range(1,11)])


CPallini

5. Вы были быстрее.

Nightpoison

Привет, спасибо за быстрый пост. Я ценю вопрос,разве это не более или менее то же самое, что мой цикл for. Я не на 100% разбираюсь в python и в том, что происходит в фоновом режиме. но за исключением вызова функции sum, она все еще содержит цикл for. Является ли это более эффективным?

Richard MacCutchan

Является ли это явным или неявным, вы не можете суммировать набор чисел без повторяющегося цикла for.

Nightpoison

Ричард, спасибо за разъяснение. Для меня это имеет смысл.