3

私が解決しようとしている問題は、すべての整数が 0 より大きく、加算すると一部の Y に等しくなるように、X 個の整数のすべての可能な順列を保持するセット S を取得することです。

したがって、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 ステートメントとして書くこともできますが、それを処理するためのきれいできれいなリスト内包表記に非常に近いと感じています。リスト内包表記でこれを行う方法はありますか?

4

2 に答える 2

2

もちろん。sum()ただし、とが必要ですitertools.product()

于 2012-07-16T18:50:25.937 に答える
2

そんな感じ:

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

変数はあなたrangeのリスト/タプルです

于 2012-07-16T18:50:43.500 に答える