Используйте функцию zip: zip( *sorted( zip(arr1, arr2) ) )
Это будет делать то, что вам нужно.
Теперь объяснение: zip(arr1, arr2)
объединит два списка, поэтому у вас есть [(0, [... список 0 ...]), (1, [... список 1...]), ...] Далее мы запускаем sorted(...)
, который по умолчанию сортируется на основе первого поля в кортеже.Затем мы снова запускаем zip(...)
, который берет кортежи из отсортированного и создает два списка, из первого элемента в кортеже (из arr1) и второго элемента (из arr2).