Создание списка значений y (значений функций) при определенных значениях x, взятых из списка

#python

#python

Вопрос:

Я хотел бы создать список значений y (т. Е. Значений функций) на основе значений x, взятых из списка.

Я запрограммировал функцию eval_poly(p,x) , которая выдает значение y для функции p в определенной точке x:

 def eval_poly(p,x): 
ans = 0
for degree,coeff in enumerate(p):
    ans  = coeff*x**degree # ekvationen som ska räknas
return ans
 

И я также создал список с значениями x, которые я хочу использовать (идея состоит в том, чтобы позже построить график с ними):

 def plot_poly(p,x_start=-10,x_end=10,color='b'):

    lst = list(range(x_start, x_end   1))
    print(lst)
 

И теперь я хочу вычислить все значения y, используя eval_poly(p, x) для всех значений x. Как я могу это сделать? Это то, что я пробовал:

  for x in lst:
    lst_y = list(eval_poly(p,x))
    print(lst_y)
 

Но я получаю TypeError: 'int' object is not iterable ?

Ответ №1:

Это хороший вариант использования для понимания списка:

 ys = [eval_poly(p,x) for x in lst]
 

Это повторяется lst и применяет вашу функцию к каждому x значению, а затем сохраняет результат в списке.

Это эквивалентно:

 ys = []
for x in lst:
    ys.append(eval_poly(p,x))
 

Я подозреваю, что это то, что вы изначально пытались сделать.

Ваша первоначальная ошибка заключалась в том, что ваша функция возвращает число, но list ожидает, что итеративное значение превратится в list .