擅长:python、mysql、java
<p>下面是一个示例的变体(嵌套<em>for</em>循环,运行时间:<em>(n-1)n/2</em>),使用<a href="http://docs.python.org/2/library/functions.html#enumerate" rel="nofollow">enumerate</a>:</p>
<pre><code>seq = (1, 2, 4, 8, 16, 32, 64)
def compare(a, b):
print('%s ~ %s' % (a, b))
if __name__ == '__main__':
for i, item in enumerate(seq, start=1):
for other in seq[i:]:
compare(item, other)
</code></pre>
<p>输出:</p>
<pre><code>1 ~ 2
1 ~ 4
1 ~ 8
1 ~ 16
1 ~ 32
1 ~ 64
2 ~ 4
2 ~ 8
2 ~ 16
2 ~ 32
2 ~ 64
4 ~ 8
4 ~ 16
4 ~ 32
4 ~ 64
8 ~ 16
8 ~ 32
8 ~ 64
16 ~ 32
16 ~ 64
32 ~ 64
</code></pre>
<hr/>
<p>使用<a href="http://docs.python.org/2/library/itertools.html#itertools.combinations" rel="nofollow">itertools</a>,它可以写得更短:</p>
<pre><code>import itertools
# ...
for a, b in itertools.combinations(seq, 2):
compare(a, b)
</code></pre>