找到具有一定数量的变量和度数的所有单项式

时间:2016-11-12 12:13:06

标签: python algorithm

假设我们有一个像[x,y,z]这样的数字和一个像2这样的数字。 我需要一个算法来找到这个3变量和度数= 2

的所有单项式

我的算法:

def mul(x:list, y:list) -> list:
        return ["".join(elm) for elm in product(x, y)]

def f(x:list, n:int) -> list:
    r = x;
    for i in range(n-1):
        r = mul(r, x)
    return r

>>> f(['x','y','z'],2)
['xx', 'xy', 'xz', 'yx', 'yy', 'yz', 'zx', 'zy', 'zz']

有没有更好的算法来做到这一点?

修改

1)假设' xz' !=' zx' 2)假设' xx' =' x ^ 2'

1 个答案:

答案 0 :(得分:3)

我相信您正在寻找的是product模块中的itertools

from itertools import product

a=product(['x','y','z'], repeat=2)
list(map(lambda x: ''.join(x), a))

输出:

['xx', 'xy', 'xz', 'yx', 'yy', 'yz', 'zx', 'zy', 'zz']