为什么';groupBy的工作方式和我认为的列表一样?(F#)
下面是一个示例代码:为什么';groupBy的工作方式和我认为的列表一样?(F#),f#,F#,下面是一个示例代码: let x = [5, 6, 65, 2, 3]; let p = x.Head; let y = Seq.groupBy (fun xx -> if xx < p then -1 elif xx > p then 1 else 0) x printfn "%A" y 但实际上它输出 seq [(0, seq [(5, 6, 65, 2, 3)])] 我误解了什么?问题是您的列表是一个包含单个元组的列表: let x = [5, 6, 65, 2, 3
let x = [5, 6, 65, 2, 3];
let p = x.Head;
let y = Seq.groupBy (fun xx -> if xx < p then -1 elif xx > p then 1 else 0) x
printfn "%A" y
但实际上它输出
seq [(0, seq [(5, 6, 65, 2, 3)])]
我误解了什么?问题是您的列表是一个包含单个元组的列表:
let x = [5, 6, 65, 2, 3];
这是因为逗号定义了一个元组。这实际上与写作相同:
// Build a tuple
let temp = (5,6,65,2,3)
// Make a list where the single item is the tuple
let x = [temp]
您需要使用分号来定义列表的元素:
let x = [5; 6; 65; 2; 3];
如果进行更改,您将看到:
seq[(0,seq[5]);(1,seq[6;65]);(-1,seq[2;3])]
let x = [5; 6; 65; 2; 3];