Python 使用“组合”进行3个或更多组合`

Python 使用“组合”进行3个或更多组合`,python,combinations,itertools,Python,Combinations,Itertools,下面是我在Sage中编写的一段代码,用于计算某些李代数的维数,这些李代数的维数等于$p^2$,约为$p$ def A_comb2rep(p): bound = p*p name_fund = [] name_comb = [] A = lambda i: WeylCharacterRing("A{0}".format(i)) for i in range(bound): for k in range(1,bound+1):

下面是我在Sage中编写的一段代码,用于计算某些李代数的维数,这些李代数的维数等于$p^2$,约为$p$

def A_comb2rep(p):
    bound = p*p
    name_fund = []
    name_comb = []
    A = lambda i: WeylCharacterRing("A{0}".format(i))
    for i in range(bound):
        for k in range(1,bound+1):
            fw = A(i+1).fundamental_weights()
            if A(i+1)(k * fw[1]).degree() > bound:
                break
            else:
                for v in fw:
                    if A(i+1)(k * v).degree() == bound:
                        name_fund.append([])
                        name_fund[len(name_fund)-1].append('A'+str(i+1)+'('+str(k)+'*'+str(v)+')')
    for i in range(1,bound): # now onto combinations of two of the fws   #####
        fw = A(i+1).fundamental_weights()
        for k in fw:
            if A(i+1)(fw[1] + fw[2]).degree() > bound:
                break
            else:
                for j in fw:
                    rep = A(i+1)(j+k)
                    deg = rep.degree()
                    if deg == bound:
                        name_comb.append([])
                        name_comb[len(name_comb)-1].append('A'+str(i+1)+'['+str(j)+'+'+str(k)+']')
    return name_comb, name_fund

代码的后半部分是两个基本权重的组合。我现在想知道如何使用iterables模块中的

composition
函数对3个或更多基本权重的组合进行扩展


更具体地说,我将如何在
fw
的3个元素的总和中编码?我知道
v=combinations(fw,3)
然后会放入
v
所有${n\choose 3}$三重组合,但是
fw
的元素是元组,比如
(1,1,1,0,0,0)
。然后,我将如何对在
v
中得到的每个三元组求和?我很抱歉,如果这个问题不适合这个网站

我的数学不好,但如果问题是“我如何将v中的每个三元组相加?”那么答案是:

sv = map(sum, v)
其中
sv
将包含来自
v