#python #python_3x #алгоритм #сортировка
box_b = [7, 3, 9, 5] box_a = [apple, banana, cherry, lemon] Суть в том, что после сортировки box_b мне нужен box_a отсортированный таким же образом. *after sorting box_b and some algorithm* box_b = [3, 5, 7, 9] box_a = [banana, lemon, apple, cherry]
Ответы
Ответ 1
box_b = [7, 3, 9, 5] box_a = ['apple', 'banana', 'cherry', 'lemon'] new_b, new_a = zip(*[(b, a) for b, a in sorted(zip(box_b, box_a))]) print(new_b) (3, 5, 7, 9) print(new_a) ('banana', 'lemon', 'apple', 'cherry')Ответ 2
Ещё можно сделать arg_sort — получить список индексов, по которым нужно пройти, чтобы получить отсортированный список. Это удобно, если данные тяжёлые, а вам нужна только итерация по отсортированным данным. box_b = [7, 3, 9, 5] box_a = ['apple', 'banana', 'cherry', 'lemon'] arg_sort = sorted(range(len(box_b)), key=lambda i: box_b[i]) print([box_b[i] for i in arg_sort]) print([box_a[i] for i in arg_sort]) # [3, 5, 7, 9] # ['banana', 'lemon', 'apple', 'cherry']
Комментариев нет:
Отправить комментарий