『壹』 python 如何找出兩個list中的相同元素
這個問題有多種解法,最常見的是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但面試官希望你能提出這個問題)
『貳』 python如何遍歷2個list
找兩個list元素少的,index遍歷完所有的,遍歷完後,把此時的index記住。然後直接循環那個較長list的剩餘部分。代碼可以參考下面的
list1=[1,2,3,4,5,6,7]
list2=['a','b','c','d']
min_length=len(list1)iflen(list1)<len(list2)elselen(list2)
max_length=len(list1)iflen(list1)>len(list2)elselen(list2)
max_list=list1iflen(list1)>len(list2)elselist2
foriinrange(min_length):
printlist1[i]
printlist2[i]
forjinrange(i+1,max_length):
printmax_list[j]
『叄』 python怎麼循環兩個列表
python循環兩個列表的方法:
用「for i in range()」的這種方法可以循環遍歷列表中的所有元素。例如:「for i in range(0,10)」可以循環遍歷多個長度為10的列表
示例如下:
執行結果如下:
更多Python知識,請關註:Python自學網!!