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