使用 itertools 创建所有组合直到一个值

Using itertools to create all combinations up to a value

我有这个代码:

return [reduce(lambda x,y: str(x)+str(y), perm) 
        for perm in itertools.combinations(alphabet, n)]

我的问题是我希望它适用于不超过 n 的所有值。这是为了家庭作业,我无法将其作为单行 Pythonic 语句。我将如何以这种方式继续,以便我可以添加如下语句:

 return [reduce(lambda x,y: str(x)+str(y), perm) 
         for perm in itertools.combinations(alphabet, n) for n in range(1,n+1)] 

除了实际有效的那个?

是这样的吗?

>>> from itertools import combinations, chain
>>> limit = 10
>>> c = chain(*(combinations(alphabet, x) for x in range(1, limit+1)))
>>> list(c)

我不会显示输出,它太长了。

编辑:根据您上面的评论,您似乎希望以字符串形式输出,所以

[''.join(s) for s in chain(*(combinations(alphabet, x) for x in range(1, limit+1)))]