Python中具有任意数量变量的列表推导式?

3

我要解决的问题是获取集合S,其中包含X个整数可能的所有排列,这些整数都大于0且相加等于Y。

因此,如果X等于2,Y等于5,可以使用以下列表理解来解决问题:

[(a,b) for a in range(1,5) for b in range(1,5) if a+b==5]

然而,我正在尝试解决任意X和任意Y的问题。我可以将其写成一系列巨大的if语句,但我觉得我离一个漂亮、干净的列表理解还很近。有没有办法用列表理解来处理它呢?


1
搜索“整数划分”(或“组合”,具体取决于您是否希望将排列视为等效)。暴力方法可以解决问题,但效率非常低。 - DSM
2个回答

2

类似这样的:

[x for x in itertools.product(*variables) if sum(x)==5]

变量是您range的列表/元组。


2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接