Скажем, у меня есть два списка:F # сортировать по индексам
let listOfValues = [100..105] //can be list of strings or whatever
let indexesToSortBy = [1;2;0;4;5;3]
Теперь мне нужно listOfValues_sorted
: 102;100;101;105;103;104
Это может быть сделано с zip
и "преобразования" в кортежей:
let listOfValues_sorted = listOfValues
|> Seq.zip indexesToSortBy
|> Seq.sortBy(fun x-> fst x)
|> Seq.iter(fun c -> printfn "%i" (snd c))
Но я думаю, есть лучшее решение для этого?
Обратите внимание, что ваш пример вывода '' listOfValues_sorted' является 102; 100; 101; 104; 105; 103', но образец код, который вы даете, будет ** фактически ** производить '102; 100; 101; 105; 103; 104'. Я считаю, что последнее - это то, что вы действительно хотите, так вот как я ответил на ваш вопрос. – rmunn