В Python добавить элементы списка

Решаю задачу, в рамках которой пытаюсь заполнить новый список param_list. Логика формирования его элементов представлена ниже:

введите сюда описание изображения

В результате же реализации моего кода в список добавляется лишь первый элемент poly_0 = x_j - x_col_list[0]. Он равен 0.157 - 0 = 0

Что не так в коде?

Код:

params_list = []
x_j = 0.157
x_col_list = [0.0, 0.3142, 0.6283]

for args in range(order):   # args = 0,1,2
    poly_0 = x_j - x_col_list[0]
    if not args:
        params_list.append(poly_0)
    poly_n =  (x_j - x_col_list[args])
    if not args:
        param_list.append(poly_n)
        poly_0 = poly_n

print(params_list)

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

Автор решения: Сергей

У вас две ошибки в:

 if not args:
        param_list.append(poly_n)

Надо:

 if args:
        params_list.append(poly_n)

Кроме того, order "вручную" на 3 выставить пришлось.

Полный код, работающий у меня - ниже. На выходе: [0.157, -0.15719999999999998, -0.47129999999999994]

params_list = []
x_j = 0.157
x_col_list = [0.0, 0.3142, 0.6283]

for args in range(3):   # args = 0,1,2
    poly_0 = x_j - x_col_list[0]
    if not args:
        params_list.append(poly_0)
    poly_n =  (x_j - x_col_list[args])
    if args:
        params_list.append(poly_n)
        poly_0 = poly_n

print(params_list)
→ Ссылка
Автор решения: Stanislav Volodarskiy

Не надо писать условные операторы. Ищите общий случай, а не подбирайте исключения.

product накапливает текущее произведение. x_i пробегает значения из x_col_list. params_list - хранит результат - накопленные произведения:

x_j = 0.157
x_col_list = [0.0, 0.3142, 0.6283]

params_list = []
product = 1
for x_i in x_col_list:
    product *= x_j - x_i
    params_list.append(product)

print(params_list)
$ python temp.py
[0.157, -0.024680399999999998, 0.011631872519999998]

Можно вовсе обойтись без цикла. itertools.accumulate вычисляет последовательные произведения:

import itertools
import operator


x_j = 0.157
x_col_list = [0.0, 0.3142, 0.6283]

params_list = list(itertools.accumulate(
    (x_j - x_i for x_i in x_col_list),
    operator.mul
))

print(params_list)
→ Ссылка