创建所有长度列表" n"来自q元素列表

时间:2016-04-19 15:01:39

标签: python list sage

几天来,我一直试图找到一种方法来创建所有长度列表" n"来自" q"的列表元素。到目前为止,我已经能够让圣人打印我想要获得的所有列表。但是,由于我需要这些列表用于另一个程序,我需要我的程序输出所有这些列表的列表,而不是让Sage打印列表。到目前为止我所拥有的是:

def XUniv(q,x,n):
    """
    :param q: is your alphabet size
    :param x: is a zero vector of any length
    :param n: is len(x)-1
    """
    for i in range(q):
        x[n]=i
        if n==0:
            print x
        else:
            XUniv(q,x,n-1)

2 个答案:

答案 0 :(得分:3)

这是你想要的吗?

sage: q=1
sage: n=3
sage: L = IntegerListsLex(min_part=0, max_part=q, length=n)
sage: list(L)
[[1, 1, 1],
 [1, 1, 0],
 [1, 0, 1],
 [1, 0, 0],
 [0, 1, 1],
 [0, 1, 0],
 [0, 0, 1],
 [0, 0, 0]]

答案 1 :(得分:2)

没有Sage:

import itertools
def all_lists_from_q_elements(q, n):
    all_lists_iter = itertools.product(tuple(range(q)), repeat=n)
    return [list(l) for l in all_lists_iter]