我已經開始學習F#了,我遇到的一件事是我不知道用什麼方式來表達Python中range
函數的等價物。我知道[1..12]
等於範圍(1,13)。但我想要做的是range(3, 20, 2)
(我知道哈斯克爾有[3,5..19]
)。我如何表達這一點?F#等效於Python的範圍
回答
seq { 3 .. 2 .. 20 }
結果
3 5 7 9 11 13 15 17 19
雖然F#sequence expressionseq { 3 .. 2 .. 20 }
在功能上媲美如果你曾經轉換的Python到F#,你會發現,
- 的Python 2 range方法返回一個Python list這是可變的。
- Python 3 range方法返回一個Python range type,它表示一個不可變的數字序列。
- F#序列表達式返回一個不可變的
IEnumerable<T>
。
解釋與F#有關的Python範圍的更好方法是看看它是如何經常使用的。正如Python 2的文檔狀態
它最常用於for循環。
和Python 3的文檔指出
通常用於在for循環循環的特定次數。
和Python的2 for
for x in range(0, 3):
print "We're on time %d" % (x)
和Python 3的for
for i in range(5):
... print(i)
最接近的F#是for in:
for i in 10 .. -1 .. 1 do
printf "%d " i
範圍在Python 3中是不可變的。 –
@JaredGoguen謝謝。我更新了我的答案。 –
作爲第二個提示,在Python 2中,'xrange'是首選的高效'範圍'對象,它具有相同的不變性質。事實上,它是首選,但並不明顯,可能是推動Python 3.X實施的一個動力。還有很多其他類似的變化,'map'函數返回一個'map'對象就是一個很好的例子。此外,'reduce'被移回到'functools'標準庫包。 –
- 1. OCaml的set_signal等效於F#
- 2. PHP等效於Javascript「with」範圍聲明
- 3. 蟒範圍方法等效於迅速
- 4. orderedSetWithOrderedSet:範圍:copyItems:NSArray的等效
- 5. 對於多維範圍,是否有Python的等價範圍(n)?
- 6. COUNTIF範圍不等於範圍
- 7. Rails的範圍不等於
- 8. 等效於System.Net.Http.MultipartFormDataContent的「curl -F」參數?
- 9. F#等效於C#的「extern alias」
- 10. VBA陣列等於範圍
- 11. 將OCaml轉換爲F#:OCaml等效於F#規範,具體爲初始化
- 12. F# - 變量範圍
- 13. 等效範圍的STL算法
- 14. roxygen2等效於python
- 15. cout.precision()等效於python
- 16. JRE等效於Python
- 17. PostgreSQL tsrange - 重疊忽略等效範圍?
- 18. 如何測試等效範圍
- 19. 的Python - 字典與等級範圍
- 20. Golang等效於Python的NotImplementedException
- 21. 等效於Python的Object.create()
- 22. 等效於Python中的createDataPartition
- 23. Python等效於Ruby的#each_cons?
- 24. PHP等效於Python的repr()
- 25. Python的os.execvp等效於PHP
- 26. PHP等效於Python的`urljoin`
- 27. F# - 展平列表/範圍
- 28. 使用VBA動態設置範圍等於另一個範圍
- 29. Solr查詢語法。是「範圍:[1000至1000]」等於「範圍:1000」?
- 30. JPA等效於ResultTransformer.DISTINCT_ROOT_ENTITY的規範?
(谷歌)(https://開頭www.google.com/search?q=f%23+range+with+step )似乎[指示](https://msdn.microsoft.com/en-us/library/dd233227.aspx)它是'3..2..20'。我不是F#的人,所以我不確定。 – user2357112
@GuyCoder'range'在Python 2.x中返回一個列表;在Python 3中它返回一個'range'對象, – chepner