Avaliando coeficientes polinomiais

Estou tentando escrever uma função que toma como entrada uma lista de coeficientes (a0, a1, a2, a3 ..... a n) de um polinômio p (x) e o valor x. A função retornará p (x), que é o valor do polinômio quando avaliado em x.

Um polinômio de grau n com coeficiente a0, a1, a2, a3 ........ an é a função

p(x)= a0+a1*x+a2*x^2+a3*x^3+.....+an*x^n

Então não sei como atacar o problema. Eu estou pensando que vou precisar de um intervalo, mas como posso fazer isso para que ele possa lidar com qualquer entrada numérica para x? Eu não estou esperando que vocês dêem a resposta, eu estou apenas precisando de um pequeno pontapé inicial. Preciso de um loop for, enquanto loop ou poderia recursiva ser uma opção aqui?

def poly(lst, x)

Preciso iterar sobre os itens na lista, eu uso os índices para isso, mas como posso fazê-lo iterar sobre um número desconhecido de itens?

Estou pensando em usar a recursão aqui:

    def poly(lst, x):
        n = len(lst)
        If n==4:
           return lst[o]+lst[1]*x+lst[2]*x**2+lst[3]*x**3
        elif n==3:
           return lst[o]+lst[1]*x+lst[2]*x**2
        elif n==2:
           return lst[o]+lst[1]*x
        elif n==1:
           return lst[o]
        else:
            return lst[o]+lst[1]*x+lst[2]*x**2+lst[3]*x**3+lst[n]*x**n

Isso funciona para n <= 4, mas eu recebo um erro de índice: índice de lista fora do intervalo para n> 4, mas não consigo ver por quê.

questionAnswers(4)

yourAnswerToTheQuestion