擅长:python、mysql、java
<p>回答的解决方案工作得非常好,但我想提出另一个使用<code>set</code>数据结构的解决方案,因为这是最适合此类问题的解决方案:</p>
<pre><code>list1 = ['product','document','light','time','run']
list2 = ['survival','shop','document','run']
set1 = set(list1)
set2 = set(list2)
matching_words = set1.intersection(set2)
# {'document', 'run'}
nonmatching_words = set1.symmetric_difference(set2)
# {'time', 'light', 'shop', 'survival', 'product'}
</code></pre>
<p>请注意,元素的顺序是随机的</p>
<p>但是,如果顺序不重要,您甚至可能希望从头到尾使用集合:</p>
<pre><code># DECLARING A SET
set1 = {'product','document','light','time','run'}
set2 = {'survival','shop','document','run'}
# Notice the use of {} instead of []
# FOR LOOP
for word in matching_words:
print(word)
# document
# run
</code></pre>
<p>如果您确实需要一个列表,您可以转换回结果(顺序仍然不可预测):</p>
<pre><code>matching_words = list(matching_words)
nonmatching_words = list(nonmatching_words)
</code></pre>