F#等效的Python范围

Edw*_*nix 5 python f#

我已经开始学习F#了,我遇到的一件事是我不知道range用Python 表达相当于函数的方法.我知道[1..12]相当于范围(1,13).但我想要做的是range(3, 20, 2)(我知道Haskell [3,5..19]).我怎么表达这个?

Guy*_*der 5

如果您曾经将 Python 转换为 F#,则F#序列表达式 seq { 3 .. 2 .. 20 }在功能上具有可比性,您会发现

  • Python 2 range方法返回一个可变的 Python列表
  • Python 3 range方法返回一个 Python range 类型,它表示一个不可变的数字序列。
  • F# 序列表达式返回一个IEnumerable<T>不可变的。

解释与 F# 相关的 Python 范围的更好方法是查看它的常用用法。正如 Python 2 文档所述

它最常用于 for 循环。

和 Python 3 文档说明

通常用于在 for 循环中循环特定次数。

和Python的2

for x in range(0, 3):
    print "We're on time %d" % (x)
Run Code Online (Sandbox Code Playgroud)

和Python 3中

for i in range(5):
...     print(i)
Run Code Online (Sandbox Code Playgroud)

最接近的 F# 是用于 in

for i in 10 .. -1 .. 1 do
    printf "%d " i
Run Code Online (Sandbox Code Playgroud)