Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List Mathematica在我得到3分后立即选择停止列表_List_Wolfram Mathematica - Fatal编程技术网

List Mathematica在我得到3分后立即选择停止列表

List Mathematica在我得到3分后立即选择停止列表,list,wolfram-mathematica,List,Wolfram Mathematica,这是我所拥有的 Select[roll, # <= 3 &] 现在,下面的列表可能有一个3或两个3。我想让它从左到右停在前三个 数学家试图编码。您可以尝试以下方法: f[list_, item_] := list[[1 ;; Position[list, item][[1, 1]]]] 用法: f[{1, 2, 3, 4, 1, 4, 3, 4, 3, 5, 6, 7, 3, 2}, 3] (* ->{1,2,3} *) f[{1, 2, 3, 4, 1, 4, 3,

这是我所拥有的

Select[roll, # <= 3 &]
现在,下面的列表可能有一个3或两个3。我想让它从左到右停在前三个


数学家试图编码。

您可以尝试以下方法:

f[list_, item_] := list[[1 ;; Position[list, item][[1, 1]]]]  
用法:

f[{1, 2, 3, 4, 1, 4, 3, 4, 3, 5, 6, 7, 3, 2}, 3]
(*
->{1,2,3}
*)
f[{1, 2, 3, 4, 1, 4, 3, 4, 3, 5, 6, 7, 3, 2}, 5]
(*
->{1,2,3,4,1,4,3,4,3,5}
*)
如果您还想筛选大于3的值,可以使用代码包装:

g[list_, item_] :=  Select[list[[1 ;; Position[list, item][[1, 1]]]], # <= 3 &]  
注:我删除了我原来的帖子,这基本上是像贝里萨利斯。这是另一个尝试

如果您确定数字3是roll的成员,则此操作应有效:

TakeWhile[roll, # != 3 &]~Append~3
这相当于:

Take[roll, LengthWhile[roll, # != 3 &] +1]
如果你不能做出这样的假设,那就先用MemberQ测试一下


编辑:TomD在第二个解决方案中建议使用+1,这就不需要使用Append。这比在整数列表中使用TakeWhile快一个数量级

list /. {x___, 3, ___} :> {x}

要通过3获得列表,只需使用右侧的{x,3}。

您能澄清一下吗?f[{1,2,5,2,3,1,2,3}]应该给出什么?{1,2,5,2},{1,2,2},{1,2,5,2,3}或{1,2,2,3}?它给出了一个随机数列表。我想显示前3个列表。当你的解决方案仍然显示为:f[list,toSearch,times]:=If[Length@{x}]获取所有匹配项,或者使用{1,2,3,4,3,5}/获取最长匹配项。{最长[x__;],3,{u__}:>{x}
list /. {x___, 3, ___} :> {x}