List 如何在F中的列表的列表中添加元素#

List 如何在F中的列表的列表中添加元素#,list,f#,List,F#,我有这样一个列表: let x = [[2; 3; 4]; [4; 5]; [2; 3]] 和一个int,例如1。我想在第一个列表中添加此int,并返回如下结果: [[1; 2; 3; 4]; [4; 5]; [2; 3]] 最方便的方法是什么 let x = [[2; 3; 4]; [4; 5]; [2; 3]] let addedOne = x |> List.mapi (fun i t -> if i = 0 then 1::t else t) 这给了你: val x :

我有这样一个列表:

let x = [[2; 3; 4]; [4; 5]; [2; 3]]
和一个int,例如1。我想在第一个列表中添加此int,并返回如下结果:

[[1; 2; 3; 4]; [4; 5]; [2; 3]]
最方便的方法是什么

let x = [[2; 3; 4]; [4; 5]; [2; 3]]
let addedOne = x |> List.mapi (fun i t -> if i = 0 then 1::t else t)
这给了你:

val x : int list list = [[2; 3; 4]; [4; 5]; [2; 3]]
val addedOne : int list list = [[1; 2; 3; 4]; [4; 5]; [2; 3]]
更一般的功能:

let addToIndex index x l =
  l |> List.mapi (fun i t -> if i = index then x::t else t)
根据约翰解决方案,使用Head的版本:

let addToHead x =
  function
  |[] -> [[x]]
  |h::t -> (x::h)::t 
这给了你:

val x : int list list = [[2; 3; 4]; [4; 5]; [2; 3]]
val addedOne : int list list = [[1; 2; 3; 4]; [4; 5]; [2; 3]]
更一般的功能:

let addToIndex index x l =
  l |> List.mapi (fun i t -> if i = index then x::t else t)
根据约翰解决方案,使用Head的版本:

let addToHead x =
  function
  |[] -> [[x]]
  |h::t -> (x::h)::t 
简单的方法

x |> function |h::t -> (1::h)::t
我们进行模式匹配,得到第一个子列表,即
h
,然后加入它并提供结果。

一种简单的方法

x |> function |h::t -> (1::h)::t

我们进行模式匹配,以获得第一个子列表,即
h
,然后加入该子列表并提供结果。

您将停留在哪个特定部分?-如果你表现出你的工作,你会得到更好的帮助。你被困在哪一部分如果您展示您的工作,您将获得更好的帮助。这是正确的,但有警告:此表达式上的模式匹配不完整。例如,值“[]”可能表示模式未涵盖的情况。这是正确的,但有警告:此表达式上的模式匹配不完整。例如,值“[]”可能表示模式未涵盖的情况。谢谢,它可以工作。你知道使用Head有什么解决方法吗?因为Head是listJohns解决方案的第一个元素,所以下面的解决方案在模式补丁中使用Head。您只需要添加[]大小写来修复警告。谢谢,实际上我所有的问题都是关于这个语法的(x::h)::t,我想我在问这个问题之前尝试过它,但它在visual studio中出现语法错误,现在它可以工作:))谢谢,它可以工作。你知道使用Head有什么解决方法吗?因为Head是listJohns解决方案的第一个元素,所以下面的解决方案在模式补丁中使用Head。您只需要添加[]大小写来修复警告。谢谢,实际上我所有的问题都是关于这个语法的(x::h)::t,我想我在问这个问题之前已经试过了,但在visual studio中出现语法错误,现在可以了:))