Моя цель заключается в следующем:Найти 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)
. Как мне это сделать?
'сортируется (с, ключ = сумма) [ : k] '(т.е. *" создать новый список, отсортировав исходный список по 'sum' каждого элемента, затем возьмите кусочек первых элементов' k' *)? – jonrsharpe
Спасибо, ваше предложение работает. – Greit
Есть много крайних случаев, хотя, например, как вы хотите иметь дело с галсами? 'sorted' стабилен, поэтому элементы, которые привязываются, будут выводиться в том порядке, в котором они изначально появлялись, но это может быть не то, что вы хотите. – jonrsharpe