擅长:python、mysql、java
<p>这个答案有两个答案。对于两者,您需要创建一个包含所有要比较的列表的列表。在</p>
<p>例如,使用上述案例,您可以执行以下操作:</p>
<pre><code>lists = [first_list, second_list]
</code></pre>
<p><strong>ITERTOOLS解决方案</strong></p>
<p>在这个解决方案中,您使用<code>itertools.combinations</code>方法,该方法遍历所有可能的组合,这意味着它将每个列表与其他列表进行比较。你可以这样实现它:</p>
^{pr2}$
<p>{iterable是第二个方法中的两个元素的组合。在这种情况下2。例如:</p>
<pre><code>itertools.combinations('ABCD', 2)
</code></pre>
<p>退货:</p>
<pre><code>('A', 'B')
('A', 'C')
('A', 'D')
('B', 'C')
('B', 'D')
('C', 'D')
</code></pre>
<p>以及:</p>
<pre><code>itertools.combinations('ABCD', 3)
</code></pre>
<p>退货:</p>
<pre><code>('A', 'B', 'C')
('A', 'B', 'D')
('A', 'C', 'D')
('B', 'C', 'D')
</code></pre>
<p><strong>循环解决方案</strong></p>
<p>如果你不想导入一些奇怪的模块,不用担心。您可以始终使用这个只需要2个<code>for</code>循环的解决方案。在</p>
<pre><code>for i in range(len(lists)):
for j in range(i + 1, len(lists)):
for first in lists[i]:
for second in lists[j]:
if levenshtein(first, second) < 2:
merged.append(set([first,second]))
</code></pre>
<p>通过这样做,您可以成功地将每个列表中的每个项目与其他列表中的每个项目进行比较,而不必对两个列表进行两次比较。在</p>