在Haskell中获取列表最后一个元素的最快方法是什么。同样在下一次迭代中,我想删除列表的第一个和最后一个元素。最优雅的方法是什么?我正在尝试列表理解,但这看起来效率不高!
最佳答案
一次性完成last
和init
即可完成这项工作。但是它们都是O(n),因此,如您所暗示的那样,如果您需要经常操纵列表的两端,则可能要考虑使用 Data.Sequence
,它支持在两个位置都插入和删除O(1)项结束。
在Haskell中获取列表最后一个元素的最快方法是什么。同样在下一次迭代中,我想删除列表的第一个和最后一个元素。最优雅的方法是什么?我正在尝试列表理解,但这看起来效率不高!
最佳答案
一次性完成last
和init
即可完成这项工作。但是它们都是O(n),因此,如您所暗示的那样,如果您需要经常操纵列表的两端,则可能要考虑使用 Data.Sequence
,它支持在两个位置都插入和删除O(1)项结束。