擅长:python、mysql、java
<p>我将从直接遍历列表开始:</p>
<pre><code>for x in words:
for y in words:
couples = x, y
</code></pre>
<p>然而,这给出了完整的笛卡尔积,它与你原来得到的不完全相同。所以我们需要第一个循环的索引,而不是第二个循环的索引:</p>
<pre><code>for i, x in enumerate(words):
for y in words[i:]:
couples = x, y
</code></pre>
<p>现在我们可以将其转换为生成器表达式(而不是lambda):</p>
<pre><code>all_couples = ((x, y) for y in words[i:] for i, x in enumerate(words))
</code></pre>