#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
.