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值以選擇它。會發現相同名字的已經被用相同的顏色顯示...
兩個男人,如何取捨,兩個男人,如何選擇?
建議你第乙個 很多人很多事都過去了很多年 但是還是值得回味 感情是慢慢積累的 看你對第二個的描述 我覺得你不是那種可以追求感覺的人 既然不追求感覺 那就選擇乙份相守的感情吧 這些年和第乙個經歷了很多了 有很多回憶我想你是割捨不下的 要不你也不會抉擇 人都年輕過 年輕的感情勢必經歷太多的風雨 誰都會有...
兩個女人,該如何選擇,兩個女人,如何選擇
建議再考驗一段時間第二個女人,一個月的時間根本不可能做到了解一個人,你誇她的那些都是你根據她的性格想象出來的,第一個你已經真正瞭解了,她也就這麼點缺點,農村的女孩兒都樸實懂事些,風俗習慣不同那不算問題,你該讓一步就讓一步,第二個如果跟你熟悉以後整天耍大小姐脾氣看你怎麼弄,本來不會做家務,到時還指望不...