0
我的目標是到k最小的對:查找兩個列表
- 對兩個列表中的元素;和
- 找到
k
最小的一對。
此刻,我可以配對的每一個元素在兩個列表下面的代碼:
import itertools
a = [1, 3, 5, 7]
b = [2, 4, 6, 8]
c = list(itertools.product(a, b))
print c
而且我的輸出是:
[(1, 2), (1, 4), (1, 6), (1, 8), (3, 2), (3, 4), (3, 6), (3, 8), (5, 2), (5, 4), (5, 6), (5, 8), (7, 2), (7, 4), (7, 6), (7, 8)]
假設我設置k = 3
,應該還給我三個最小的對:(1, 2)
,(1, 4)
和(3, 2)
。我怎麼做?
'排序(C,鍵= SUM) :k]'(ie *「通過按照每個元素的'sum'對原始列表進行排序來創建一個新列表,然後對第一個'k'元素」*)進行切片? – jonrsharpe
謝謝,您的建議有效。 – Greit
雖然有很多邊緣案例 - 例如,您想如何處理關係? 'sorted'是穩定的,所以tie的項目會按照它們最初出現的順序輸出,但這可能不是你想要的。 – jonrsharpe