我试图解决的问题是得到集合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语句系列,但我觉得我是如此接近一个漂亮,干净的列表理解来处理它。有没有办法用列表推导来做到这一点?
答案 0 :(得分:2)
不确定。但您需要sum()
和itertools.product()
。
答案 1 :(得分:2)
类似的东西:
[x for x in itertools.product(*variables) if sum(x)==5]
其中变量是range
s