回答
sortBy :: (a -> a -> Ordering) -> [a] -> [a]
comparing :: (Ord b) => (a -> b) -> a -> a -> Ordering
在這種情況下,我們想通過第二個元素進行比較。你可以使用comparing snd
來獲得一個函數,它可以通過元素的第二個元素比較兩個元組。
如果我想定義我自己的排序功能來從任何地方打電話,那我該怎麼做呢?我可能需要多次使用 – user1214840 2012-02-16 21:18:45
換句話說,我想定義自己的排序函數,它需要一排元組對它的第二個元素進行排序,然後返回同樣的元組列表。 – user1214840 2012-02-16 21:26:12
@ user1214840與其他定義相同:'myFancySort = { - 使用ehird的提示在這裏實現 - }' – 2012-02-16 21:28:35
另一個很酷的技巧是使用on
從Data.Function:
import Data.Function (on)
import Data.List (sortBy)
sortBy (compare `on` snd) [...]
不低於comparing
太大的不同,但是從時間一個漂亮的把戲時間。
'on'有一些不錯的技巧。我偶爾會發現'equating = on(==)'是有用的。 (比較=比較) – 2012-02-16 23:19:31
考慮一個「普通」之類的
sort xs = ... a < b ...
這樣的各種必須的compare
使用,或它的朋友,如<
。所以,如果你已經實現了這樣的事情,那麼,而不是隻是compare a b
或a < b
,而不是compare (snd a) (snd b)
或snd a < snd b
。
sort xs = ... snd a < snd b ...
當然,如果你聰明,你會抽象出來的「訪問」,並使它成爲一個額外的輸入排序功能:
sortComparingOn f xs = ... f a < f b ...
你甚至可以抽象出比較乾脆:
sortBy cmp xs = ... a `cmp` b ...
sortBy
在Data.List中提供,如上面提到的那樣。
- 1. 按第一個元素對元素列表排序,但如果按第二個元素排序則等於
- 2. 按方案中對的第二個元素對排序列表
- 3. Python:如何按最常見的第一個元素對列表進行排序?
- 4. 如何按v2.3中的第n個元素對列表進行排序?
- 5. Python:按每個子列表的第一個元素排序列表列表
- 6. 排序第二個元素的嵌套字符串列表(python)
- 7. 如何對多個元素的字典列表進行排序
- 8. 按第二個節點元素對單獨鏈接列表排序。 Java
- 9. R:列表中的哪個元素對應於排序列表的元素
- 10. 列表和添加第二個元素
- 11. Python列表從第二個元素
- 12. 按第三個元素排序Python列表,然後按第一個元素排序?
- 13. 如何獲得每個元素的第二元素列表
- 14. 如何按降序和第二個元素對對的向量進行排序?
- 15. 按照2元組中元素的比例對列表L進行排序
- 16. 按python列表元素排序項目
- 17. Python:按元素排序列表字典
- 18. 按行中的第一個元素對csv進行排序
- 19. 按相似元素的元素排序列表
- 20. ArrayList中的元素對同一列表中的元素排序
- 21. 排序第2元組元素的元組的列表
- 22. Python:對列表中的特定元素進行排序
- 23. 如何對錶格中的Django元素列進行排序?
- 24. jquery根據div元素的狀態對列表進行排序
- 25. Python - 對列表中的元素進行排序
- 26. 對數組列表中的異類元素進行排序
- 27. 如何對列表中的元素進行多重排序
- 28. 如何對R中列表中的元素進行排序?
- 29. 按遞增順序對元素排序兩個列表
- 30. 如何按每個元素中的特定字符對列表進行排序?
這是一個功課題嗎?如果是這樣,你應該添加'家庭作業'標籤。 – 2012-02-16 21:29:31