擅长:python、mysql、java
<p>当然,这将生成每一对,因为每个<code>for</code>循环将遍历列表中的每个项。</p>
<p>您可以在这里使用一些<a href="http://docs.python.org/3/library/itertools.html" rel="noreferrer">itertools</a>魔法来生成所有可能的组合:</p>
<pre><code>import itertools
for a, b in itertools.combinations(mylist, 2):
compare(a, b)
</code></pre>
<p><a href="http://docs.python.org/3/library/itertools.html#itertools.combinations" rel="noreferrer">^{<cd2>}</a>将iterable中的每个元素与其他元素配对,但只配对一次。</p>
<hr/>
<p>您仍然可以使用基于索引的项访问(相当于您习惯的访问)来编写它,使用嵌套的<code>for</code>循环:</p>
<pre><code>for i in range(len(mylist)):
for j in range(i + 1, len(mylist)):
compare(mylist[i], mylist[j])
</code></pre>
<p>当然,这可能看起来不太好,但有时这仍然是最简单和最容易理解的解决方案,所以你不应该回避解决这样的问题。</p>