簡體   English   中英

比較2個列表中元素的有效方法

[英]Efficient way to compare elements in 2 lists

我想比較2個列表中的條目:

例如:

for key in keys:
        for elem in elements:
            #Find a key in common with 2 lists and write the corresponding value
            if key == elem:
                 do something
            #Iterate through elements unit the current "key" value is found.
            else:
                 pass

這種方法的問題在於它非常慢,有沒有更快的方法呢?

*假設len(keys) > len(elements)

使用集合,然后集合相交將返回公共元素。

設置交集是O(min(len(s1), len(s2))操作。

>>> s1 = range(10)
>>> s2 = range(5,20)
>>> set(s1) & set(s2)  #set intersection returns the common keys
set([8, 9, 5, 6, 7])   # order not preserved 

將它們變成集合:

set1 = set(keys)
set2 = set(elements)

現在您可以找到他們的交集:

set1.intersection(set2)

這些集合不會保留順序,因此您將只獲得常見元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM