python 如何找出兩個list中的相同元素

時間 2021-08-11 17:49:46

1樓:

這個問題有多種解法,最常見的是brute-force 也叫暴力列舉法,也就是把兩個list當中的每個元素都取出來進行兩兩比較,直到找到相同元素。設第乙個陣列的長度為n,第二個陣列的長度為m,則時間複雜度為o(n*m),空間複雜度為o(1)

但是個問題常見的解決方法是雜湊表。在python當中有dictionary這種資料型別,其實是乙個雜湊表。運用這種資料型別,可以迅速檢索到想要的元素。

但這種方法需要儲存一組元素,所以時間複雜度為o(n),空間複雜度為o(m)。

以下是程式:

def find_same_element(l1, l2):

dist = {}

for i in l1:

dist[i] = 1

for i in l2:

if dist.get(i) > none:

return i

return none

以下是檢驗

l1 = [1, 2, '34', 34, 5]

l2 = [4, 7, 8]

print find_same_element(l1, l2)

應當輸出none

l1 = [1, 2, '34', 34, 5]

l2 = [4, 7, 8,5]

print find_same_element(l1, l2)

應當輸出5

這個函式只能找到乙個共同元素,如果兩個list有多個相同元素則只能輸出中間的乙個。

這個問題常見於面試題,屬於最簡單的面試題目。需要給面試官說明的是,

第一,雜湊表可以快速檢索元素,

第二,python有獨特的資料型別,

第三,多個共同元素的情況需要面試官告知如何處理,

第四,注意沒有共同元素的時候的輸出(程式中為none但面試官希望你能提出這個問題)

2樓:日time寸

可以對第二個list的元素進行遍歷,檢查是否出現在第二個list當中,如果使用表理解,可以使用一行**完成任務。

list1 = [1,2,3,4,5]

list2 = [4,5,6,7,8]

print [l for l in list1 if l in list2]

# [4,5]

如果每乙個列表中均沒有重複的元素,那麼還有另外一種更好的辦法。首先把兩個list轉換成set,然後對兩個set取交集,即可得到兩個list的重複元素。

set1 = set(list1)

set2 = set(list2)

print set1 & set 2#

3樓:匿名使用者

[x for x in list1 if x in list2]

4樓:

print [x for x in list2 if x in list1]

就是這樣,沒有什麼分行。

如何快速找出兩個excel表中相同的人名

浪小客 1 首先,我們開啟excel來建立您要過濾的內容,然後選擇此列。下面我們以張一,張二,張三,張一,張四為例。2 然後找到開始,條件格式,突出顯示單元格規格和重複值。3 之後我們單擊選擇重複值並單擊小三角形用來選擇顏色的選項。4 最後,單擊ok值以選擇它。會發現相同名字的已經被用相同的顏色顯示...

兩個男人,如何取捨,兩個男人,如何選擇?

建議你第乙個 很多人很多事都過去了很多年 但是還是值得回味 感情是慢慢積累的 看你對第二個的描述 我覺得你不是那種可以追求感覺的人 既然不追求感覺 那就選擇乙份相守的感情吧 這些年和第乙個經歷了很多了 有很多回憶我想你是割捨不下的 要不你也不會抉擇 人都年輕過 年輕的感情勢必經歷太多的風雨 誰都會有...

兩個女人,該如何選擇,兩個女人,如何選擇

建議再考驗一段時間第二個女人,一個月的時間根本不可能做到了解一個人,你誇她的那些都是你根據她的性格想象出來的,第一個你已經真正瞭解了,她也就這麼點缺點,農村的女孩兒都樸實懂事些,風俗習慣不同那不算問題,你該讓一步就讓一步,第二個如果跟你熟悉以後整天耍大小姐脾氣看你怎麼弄,本來不會做家務,到時還指望不...