<p>我有一个清单内的表达理解:</p>
<pre><code>[(i,j,k) for i in S for j in S for k in S
if ((i+j+k==0) and (i!=0) and (j!=0) and (k!=0))]
</code></pre>
<p>但它似乎不是在我的条件之间,而是作为或。为什么会这样?在</p>
<p>问题是当i,j和k中的一个为0时,元组没有被添加,这不是我想要的。我只想在它们都为0时发射。一、 e:我想把0,3,-3包括在结果中。在</p>
<p>使用<code>itertools</code>可以大大简化这一过程。。。在</p>
<pre><code>from itertools import combinations_with_replacement as icwr
S = [t for t in icwr(range(-3,3),3) if t != (0,0,0)]
print S
</code></pre>
<p>这要简单得多。。。(如果这是你想做的事!)在</p>