在Python中列出具有任意数量变量的理解?

时间:2012-07-16 18:46:08

标签: python list-comprehension

我试图解决的问题是得到集合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语句系列,但我觉得我是如此接近一个漂亮,干净的列表理解来处理它。有没有办法用列表推导来做到这一点?

2 个答案:

答案 0 :(得分:2)

不确定。但您需要sum()itertools.product()

答案 1 :(得分:2)

类似的东西:

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

其中变量是range s

的列表/元组