我正在訓練我獲得的知識并重新做一些練習以使資訊在我的腦海中保持良好狀態。
我正在創建一個函式,它的目標是同時迭代 2 個串列,并將資料從它們中獲取到一個串列中,我需要將其作為目標輸出回傳。現在,我已經完成了練習,只是無法理解最后必須在其中的 2 行,以便我通過練習。我做的一切都很好,只是不明白這兩行代碼的必要性。希望幫助理解我們的話中的含義,以及它們只是做什么,以及它們為什么簡單地存在。
假設我們有一個示例 2 串列:
list1 = [1, 3, 5, 7, 9]
list2 = [1, 2, 3, 6, 8, 9, 10]
def get_sorted_union(list1, list2):
i, j = 0, 0
list_to_return = []
while i < len(list1) and j < len(list2):
if list1[i] > list2[j]:
list_to_return.append(list2[j])
j = 1
elif list1[i] < list2[j]:
list_to_return.append(list1[i])
i = 1
else:
list_to_return.append(list1[i])
i = 1
j = 1
list_to_return = list1[i:] #Those are the 2 lines i cant understand why they exist. v
list_to_return = list2[j:]
return list_to_return
uj5u.com熱心網友回復:
最后兩行將輸入串列的其余部分添加到輸出中。
當您的輸入串列長度不同時,這一點很重要。例如
list1 = [1,4,5]
list2 = [2]
現在,當代碼到達這些行時,i = 1 和 j = 1。您的 list_to_return 只有 [1,2],但您還想將 list1 [4,5] 中的剩余元素添加到此串列中
uj5u.com熱心網友回復:
一旦您通過了其中一個串列的所有元素,另一個串列很有可能仍然包含元素,并且由于您的 AND 子句,您的 while 回圈將不再繼續。list_to_return = list1[i:]
將任何剩余的元素附加list1
到list_to_return
. [i:]
表示從索引 i 到串列末尾的所有元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/469387.html