2012-07-16 44 views
3

我試圖解決的問題是讓持有的整數X號的所有可能的排列,使得所有的整數是大於0和添加時等於一些Y.在Python中使用任意數量的變量列表推導?

所以集合S

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

不過,我試圖解決一個任意X和我可以任意Y.:如果X是等於2和Y分別等於5,問題可能與此列表解析求解把它寫成一個巨大的if語句系列,但我覺得我非常接近一個很好的,清晰的列表理解來處理它。有沒有辦法用列表解析來做到這一點?

+1

搜索列表/元組「整數分區」(或「成分」,這取決於你是否要考慮置換等價)。蠻力可行,但效率很低。 – DSM 2012-07-16 19:02:08

回答

2

類似的東西:

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

,其中的變量是您range小號