回答
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