我在做一個謎題,我必須將兩個長度相同的串列添加到一個新的串列中,并通過串列中的第二個元素對該串列進行排序。
for x in range(n)。
tmp.append([start[x],end[x]] )
其中start和end是包含相等元素的串列,n是start和end的長度。
現在,不知道為什么在使用下面的代碼時出現了差異/錯誤。
end.sort()
for x in range(n)。
tmp.append([start[x],end[x]] )
并且
for x in range(n)。
tmp.append([start[x],end[x]])
tmp.sort(key=lambda x:x[1] )
編輯:-
輸入串列
start=[1, 3, 0, 5, 8, 5]
end=[2, 4, 6, 7, 9, 9]
通過排序先輸出
[[1, 2] 。[3, 4], [0, 6], [5, 7], [8, 9], [5, 9]]
稍后通過排序輸出
[[1, 2] 。[3, 4], [0, 6], [5, 7], [8, 9], [5, 9]]
對這個串列作業正常,但對更大的陣列不作業 (陣列包含80個元素,所以沒有在這里上傳)
uj5u.com熱心網友回復:
如果你先對end進行排序,你就會把原來的start順序和排序后的end順序結合起來。
如果你先合并這兩個串列,然后按結束元素排序,那么開始元素也會被重新排序,因為它們與它們的結束伙伴一起 "標記"。考慮一下
start = [1, 2, 3]
end = [3, 2, 1]
現在,對end進行排序和組合,你最終會得到:
start = [1, 2, 3]
end = [1, 2, 3]
# =>/span>
tmp = [[1, 1], [2, 2], [3, 3]]
然而,首先進行組合,產生:
tmp = [[1, 3]。[2, 2], [3, 1] ]
而按第二個元素排序,也會洗掉舊的起始元素:
而按第二個元素排序,也會洗掉舊的起始元素。
tmp.sort(key=lambda x:x[1] )
# [[3, 1], [2, 2], [1, 3]]/span>
旁注:查看zip:
tmp = list(zip(start, end)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/306626.html
標籤:
上一篇:計算一個df的頻率,以百分比表示
