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@
list /. {x___, 3, ___} :> {x}