Сортировка кортежей в F # - PullRequest
6 голосов
/ 30 апреля 2009

У меня есть список кортежей, представляющих координаты точек. Как я могу отсортировать их по первому или второму значению, чтобы я мог расположить свои точки слева направо первым и сверху вниз, затем?

Ответы [ 3 ]

6 голосов
/ 30 апреля 2009

Звучит так, как вы хотите, например,

myList |> List.sortBy fst

http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/FSharp.Core/Microsoft.FSharp.Collections.List.html

Но кортежи поддерживают структурное равенство и сравнение, поэтому сортировка по умолчанию (лексикографическая) может делать то, что вы хотите.

2 голосов
/ 30 апреля 2009

Примечание стороны:

Это не о сортировке, но если вы используете кортежные координаты, вы можете использовать Set вместо списка. Использование набора действительно помогло мне упростить мою реализацию Tetris .

1 голос
/ 30 апреля 2009
 let sorted = List.sort_by (fun (a,b) -> a,b) myList

Измените a, b, если вам нужно наоборот

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...