使用itertools创建最多值的所有组合

时间:2015-07-01 08:51:22

标签: python list lambda list-comprehension itertools

我有这段代码:

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)] 

除了实际有效的一个?

1 个答案:

答案 0 :(得分:0)

这样的东西?

>>> 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)))]