Поскольку вы хотели функциональное решение с itertools, вот один вкладыш:
import itertools as itt
from collections import Counter
n = 3
xy = ("x", "y") # list of variables may be extended indefinitely
poly = '+'.join(itt.starmap(lambda u, t: u+"*"+t if t else u, zip(map(lambda v: "C["+str(v)+"]", itt.count()),map(lambda z: "*".join(z), map(lambda x: tuple(map(lambda y: "**".join(map(str, filter(lambda w: w!=1, y))), x)), map(dict.items, (map(Counter, itt.chain.from_iterable(itt.combinations_with_replacement(xy, i) for i in range(n+1))))))))))
Это даст вам
C[0]+C[1]*x+C[2]*y+C[3]*x**2+C[4]*y*x+C[5]*y**2+C[6]*x**3+C[7]*y*x**2+C[8]*y**2*x+C[9]*y**3
Примечание, порядок коэффициентов немного отличается. Это будет работать не только для любого п, но и для любого числа переменных (х, у, г, и т.д ...)
Просто для смеха
Способ, которым написан ваш вопрос, читается как «пожалуйста, сделайте мою домашнюю работу». Вы должны действительно рассмотреть публикацию того, что вы пробовали до сих пор. – inspectorG4dget
Полином двух переменных требуется двумерная матрица коэффициентов (n x n). – Kos
Идеи: Треугольник поискового паскаля и как он относится к полиномиальному расширению. –