<p>可以使用<a href="https://docs.python.org/3/library/itertools.html#itertools.product" rel="nofollow noreferrer">^{<cd1>}</a>获取列表本身的<a href="https://en.wikipedia.org/wiki/Cartesian_product" rel="nofollow noreferrer">Cartesian product</a>,并使用列表理解删除重复值的元组:</p>
<pre><code>from itertools import product
countries_bigrams = [(x, y) for x, y in product(countries, repeat=2) if x != y]
print(countries_bigrams)
</code></pre>
<p>输出:</p>
<pre><code>[('france', 'brazil'), ('france', 'usa'), ('france', 'uk'), ('france', 'canada'), ('france', 'mexico'), ('france', 'angola'), ('brazil', 'france'), ('brazil', 'usa'), ('brazil', 'uk'), ('brazil', 'canada'), ('brazil', 'mexico'), ('brazil', 'angola'), ('usa', 'france'), ('usa', 'brazil'), ('usa', 'uk'), ('usa', 'canada'), ('usa', 'mexico'), ('usa', 'angola'), ('uk', 'france'), ('uk', 'brazil'), ('uk', 'usa'), ('uk', 'canada'), ('uk', 'mexico'), ('uk', 'angola'), ('canada', 'france'), ('canada', 'brazil'), ('canada', 'usa'), ('canada', 'uk'), ('canada', 'mexico'), ('canada', 'angola'), ('mexico', 'france'), ('mexico', 'brazil'), ('mexico', 'usa'), ('mexico', 'uk'), ('mexico', 'canada'), ('mexico', 'angola'), ('angola', 'france'), ('angola', 'brazil'), ('angola', 'usa'), ('angola', 'uk'), ('angola', 'canada'), ('angola', 'mexico')]
</code></pre>
<p>请注意,这并不是得到bigrams,您原来的方法已经得到了<a href="https://en.wikipedia.org/wiki/Bigram" rel="nofollow noreferrer">bigrams</a></p>