擅长:python、mysql、java
<p>要在线性时间内找到它们,应该使用某种散列。Python中最简单的方法是使用dict:</p>
<pre><code>list1 = [1, 8, 5, 3, 4]
list2 = [5, 4, 1, 3, 8]
common = set(list1).intersection(list2)
dict2 = {e: i for i, e in enumerate(list2) if e in common}
result = [(i, dict2[e]) for i, e in enumerate(list1) if e in common]
</code></pre>
<p><code>result</code>将是</p>
<pre><code>[(0, 2), (1, 4), (2, 0), (3, 3), (4, 1)]
</code></pre>
<p>您可以使用类似这样的方式格式化和打印:</p>
<pre><code>for i1, i2 in result:
print(f"list1[{i1}] with list2[{i2}]")
</code></pre>
<p>你会得到:</p>
<pre><code>list1[0] with list2[2]
list1[1] with list2[4]
list1[2] with list2[0]
list1[3] with list2[3]
list1[4] with list2[1]
</code></pre>