擅长:python、mysql、java
<p>创建一组出现在列表1中的整数:</p>
<pre><code>integers_in_list_one = {tup[0] for tup in list1}
</code></pre>
<p>那你就可以了</p>
<pre><code>common = [tup for tup in list2 if tup[0] in integers_in_list_one]
</code></pre>
<p><strong>为什么是一套?</strong></p>
<p>由于集合提供了O(1)查找,通过使用集合,我们得到了时间复杂度为O(n)而不是O(n^2)的解</p>
<p>完整示例:</p>
<pre><code>list_1 = [(1, 'string1'), (3, 'string2'), (5, 'string3')]
list_2 = [(1, 'otherstring1'), (2, 'otherstring2'), (3, 'otherstring3'), (4, 'otherstring4'), (5, 'otherstring5')]
integers_in_list_one = {tup[0] for tup in list_1}
common = [tup for tup in list_2 if tup[0] in integers_in_list_one]
print(common)
</code></pre>
<p>输出</p>
<pre><code>[(1, 'otherstring1'), (3, 'otherstring3'), (5, 'otherstring5')]
</code></pre>