组合生成器

2024-03-29 05:11:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个代码,在k长度k>;n中给出n个元素的所有可能的组合。这个代码的问题是内存很快就用完了。我想知道有没有人知道如何用生成器来解决这个问题。我不想得到一个列表元素的所有可能的组合。我想得到一定长度的所有元素的组合。 谢谢。在

def allstrings(alphabet, length):
    """Find the list of all strings of 'alphabet' of length 'length'"""

    if length == 0: return []

    c = [[a] for a in alphabet[:]]
    if length == 1: return c

    c = [[x,y] for x in alphabet for y in alphabet]
    if length == 2: return c

    for l in range(2, length):
        c = [[x]+y for x in alphabet for y in c]

    return c

if __name__ == "__main__":
    for p in allstrings(['a','b','c'],4):
        print (p)

Tags: of内存代码ingt元素列表for