擅长:python、mysql、java
<p>我最初是作为评论发表的,但我认为这确实是一个答案。</p>
<p>您误用了<code>itertools.combinations</code>,这妨碍了您以方便的方式获取数据的能力。<code>itertools.combination(range(k, r), r-k)</code>总是会产生正好一个值,<code>range(k,r)</code>。这是不必要的;你应该直接使用范围。</p>
<p>然而,用于生成<code>k</code>和<code>if</code>值的<code>k</code>和<code>r</code>语句是一个组合。您可以使用<code>for k, r in itertools.combinations(range(items+1), 2)</code>,而不是原始代码中的三个级别的语句。我怀疑您在代码中输入<code>itertools.combinations</code>调用时试图这样做,但结果却放错了位置。</p>
<p>因此,要最终解决实际问题:要访问数据,您需要将所有项放入单个数据结构中,而不是打印它们。列表理解是一种简单的方法,特别是当你简化了生成它们的逻辑之后,正如我在上面建议的更改所做的那样:</p>
<pre><code>import itertools
items = 4
results = [range(k, r) for k,r in itertools.combinations(range(items+1),2)]
print results
# prints [[0], [0, 1], [0, 1, 2], [0, 1, 2, 3], [1], [1, 2], [1, 2, 3], [2], [2, 3], [3]]
</code></pre>
<p>如果需要访问各个项,可以使用索引进入<code>results</code>列表,然后根据需要进入其成员列表。</p>
<pre><code>print results[6] # prints [1, 2, 3]
print results[6][0] # prints 1
</code></pre>