我有一個像[1..12]
這樣的列表,我希望得到一塊像[4..9]
。不知道我該怎麼做,我是F#的新手。我不知道是否有內置方法,但我想知道手動方式。如何獲得一張清單?
4
A
回答
4
要立即回答您的問題:您如何獲得一份清單?模式匹配。
您可以使用模式匹配來編寫從列表中提取範圍的函數。基本算法是跳過列表中的每個元素,同時E < Min,然後取每個元素的同時E < =最大。類似這樣的:
let range min max xs =
let rec skipWhile f = function
| x::xs when f x -> skipWhile f xs
| xs -> xs
let rec takeWhile f acc = function
| x::xs when f x -> takeWhile f (x::acc) xs
| _ -> List.rev acc
xs
|> skipWhile ((>) min)
|> takeWhile ((>=) max) []
[1..12] |> range 4 9
> val it : int list = [4; 5; 6; 7; 8; 9]
1
假設你使用的F# OCaml的樣子,你可能想使用List標準模塊,可能是它的filter
功能。
否則,匹配的尾遞歸函數可以做到。
8
[1..12] |> List.filter (fun x -> x >= 4 && x <= 9)
或
[1..12] |> Seq.skip 3 |> Seq.take 6 |> Seq.toList
清單不支持分片,但如果你使用一個數組,而不是你也可以這樣做:
[|1..12|].[3..8]
(注意3..8代替4..9因爲基於0的索引)
相關問題
- 1. Android-如何獲得在清單
- 2. 我如何獲得一個清單,按頻率排序在R
- 3. 如何獲得IsolatedStorage中所有文件的統一清單?
- 4. 如何獲得多個類別的單品清單
- 5. 如何在張量流中獲得PI?
- 6. 如何獲得張貼的時間戳?
- 7. 如何按名稱獲得張量流?
- 8. 如何獲得Tensorflow 4D張量的值
- 9. laravel如何獲得單行和張貼查看
- 10. 如何獲得單張地圖的檢索算法值
- 11. 如何在TensorFlow中獲得最大3張張?
- 12. 如何從兩張張量中獲得均方?
- 13. Theano在張量中獲得唯一值
- 14. TensorFlow:如何獲得子陣列的每一行中張量
- 15. jQuery的加載HTML - 如何獲得最後一張表返回
- 16. iOS:如何獲得一張拉伸的圖像?
- 17. 如何在一張表中獲得選擇元素?
- 18. NextGen圖片庫 - 如何獲得下一張圖片的網址
- 19. 如何獲得最清晰的文字?
- 20. 如何獲得焦點時清空JTextField
- 21. jQuery的 - 如何獲得單一值[]
- 22. 如何分割獲得一個單位
- 23. 如何獲得單一的點擊
- 24. 如何從m2e ebay清單中獲得所有兒童產品
- 25. 如何獲得當前屏幕上的所有窗口清單?
- 26. 如何獲得獨特的產品清單?
- 27. Redis - 如何獲得兩個清單之間的區別
- 28. 如何在清單箱中獲得物品的價值成員
- 29. 如何獲得視覺上不同顏色的清單?
- 30. 如何獲得所有可能的工作分配清單?