Я пытаюсь написать разные реализации для дробной проблемы с рюкзаком.
Для этого у меня есть 2 массива:
- Ценности
- Веса
Значение элементов [n] соответствует весам элементов [n]. Таким образом, мы можем рассчитать value_per_unit как:
for I in range(values):
value_per_unit.append(values[I]/weights[I])
value_per_unit.sort()
Теперь мне нужно, чтобы 2 массива (значения и веса) были отсортированы в соответствии с массивом value_per_unit
eg: If
- значения = [60, 100, 120]
- веса = [20, 50, 30]
затем
values_per_unit = [3.0, 2.0, 4.0]
и поэтому values_per_unit_sorted будет [2.0, 3.0, 4.0]
Мне нужно, чтобы массивы значений и весов стали:
- значения_отсортированные = [100,60,120]
- weights_sorted = [50,20,30]
Есть ли способ добиться этого с помощью простых лямбда-функций?
Я все еще могу сделать что-то подобное, но каждый раз, когда мне нужно получить доступ к элементам, это кажется крайне неэффективным:
weights[(value_per_unit_sorted.index(max(value_per_unit_sorted)))]