каким будет код в Python, если мне нужно добавить серию, принимающую значения на разрыв 3 - PullRequest
0 голосов
/ 05 ноября 2018

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

expectation = nsum(lambda x: x*(1/2**(x+1)),[0,inf])

Но если я хочу, чтобы x принимал значения 4,7,10,13 ..., т. Е. На промежутке в три, то каким должен быть код?

1 Ответ

0 голосов
/ 05 ноября 2018

Есть ли веская причина, по которой вы бы использовали лямбда-функцию? Это делает ваш код менее читабельным. Оператор% является одним из способов, позволяющих обрабатывать пробелы в списках.

sum = 0
for x in range(4,100000,3):
    x *= 1/2**(x+1)
    sum += x

альтернатива - составить список чисел и использовать позицию списка, чтобы получить каждый третий элемент в списке. Например:

l = list(range(10000))
l = l[::3]

Если вам действительно нужно попробовать это с лямбда-функцией, вы можете попробовать это так:

expectation = sum(map(lambda x: x*(1/2**(x+1)) if x%3==0 else 0,range(1000))) 

Функция карты передает диапазон 1000 чисел один за другим в лямбду. Лямбда-функция выполняется только в том случае, если переданное число можно разделить на 3 (поэтому шаги 3).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...