Учитывая два списка разной длины, но в основном с аналогичными (или перекрывающимися) значениями, такие как:Заполнение нулей в список в определенных позициях
ls_1 = [7, 26, 26, 55, 69, 71, 73, 80, 121, 124, 126, 127,
131, 133, 144, 153, 153, 159, 160, 210, 219, 221,
235, 235, 241, 243, 289, 299, 300, 309, 327, 327,
328, 391, 419, 421, 423, 433]
ls_2 = [7, 28, 28, 60, 69, 81, 121, 124, 125, 127, 131, 133,
144, 153, 153, 159, 160, 210, 219, 221, 235, 235, 241,
243, 327, 327, 330, 391, 419, 421, 423, 433]
Есть простой способ прокладки в «недостающих» значениях в списке 2 с нулями, чтобы списки соответствовали длине?
EDIT: Я пытаюсь найти способ сделать списки одинаковой точной длины, поместив нули, где они находятся , скорее всего, можно найти. Вероятность здесь определяется как измеренное расстояние между пунктом [i] в списке 1 и пунктом [i] в списке 2.
Note1: Я понимаю, что проблема не определена. Полезный ответ, например, указал бы мне на метод сравнения элементов в списках и нахождение вероятного порога.
Note2: Списки всегда сортируются, производительность не является большой проблемой.
Пример: вставить два нуля между значениями 69 и 81, а также еще некоторыми другими нулями между 330 и 391.
Моим подхода до сих пор было вычисляя разницу между значениями, и когда difference > some_treshold
, я бы a ls_2.insert
.
Однако это, кажется, не самый надежный метод, поскольку он требует произвольного порога.
for i in range(len(ls_2)):
distance = ls_2[i] - ls_1[i]
if distance > 3:
ls_2.insert(i, 0)
print(len(ls_2), len(ls_1)) #double-checking, lengths are the same.
Я задаю этот вопрос конкретно, потому что это приводит к другому вопросу, то есть как сравнивать разные по величине списки целых чисел. То, что я имею в виду, состоит в том, что, выполняя описанные здесь дополнения, я смогу реализовать более простые алгоритмы, такие как расстояние со спутника и эвклидовое расстояние. Самая конечная цель - заполнить большое количество списков и ранжировать их по сходству с списком целых чисел.
Дайте мне знать, если все это имеет смысл или есть более простые способы обойти это. (И если было бы более целесообразно публиковать два отдельных вопроса).
Всегда ли отсортированы списки входных данных? Нужен ли порядок, включая нули в середине списка? Или вам нужны нули, чтобы занять место в списке? – pferate
Первый шаг: придумайте точную формулировку проблемы и предполагаемое решение. Вы не можете вводить точность, пока не определите, что вы подразумеваете под «отсутствием». – brianpck
Спасибо за отзыв. Я отредактирую вопрос. –