擅长:python、mysql、java
<p>如前所述,实际上您并没有将<code>i</code>或{<cd2>}用于任何事情,所以嵌套循环是无稽之谈;您可以将计算的循环次数作为单个顶级循环循环。在</p>
<p>{从给定的一个输入序列}中可以看到一个唯一的输入序列}:</p>
<pre><code>import itertools
for x, y in itertools.combinations_with_replacement(some_iter, 2):
do_something(x, y)
</code></pre>
<p>在没有不必要的索引的情况下,Pythonic等价于:</p>
^{pr2}$
<p>如果还需要索引,只需将其与<code>enumerate</code>配对:</p>
<pre><code>for (ix, x), (iy, y) in itertools.combinations_with_replacement(enumerate(some_iter), 2):
do_something(ix, x, iy, y)
</code></pre>
<p>使用<code>itertools.combinations_with_replacement</code>(有或没有<code>enumerate</code>)将更有效,也更通用:如果依赖于索引,则将输入限制为<em>序列</em>,因此如果不首先将它们转换为序列,则任意iterable(<code>set</code>,<code>dict</code>,生成器表达式等)将无法工作。使用Pythonic方法意味着您可以接受并使用任何有限iterable,而无需执行手动类型转换和索引。在</p>