Mathematica Pick一拿到3就停止列表

Cor*_*hot 5 wolfram-mathematica list

这是我的...

Select[roll, # <= 3 &]
Run Code Online (Sandbox Code Playgroud)

现在,下面的列表可能有一个3或两个三个.我希望它从左到右停在前三个.

数学家试图编码.

Dav*_*idC 7

注意:我删除了我的原始帖子,这基本上就像belisarius的帖子.这是另一次尝试......

如果您确定数字3是其成员roll那么这应该有效:

TakeWhile[roll, # != 3 &]~Append~3
Run Code Online (Sandbox Code Playgroud)

这相当于:

Take[roll, LengthWhile[roll, # != 3 &] +1]
Run Code Online (Sandbox Code Playgroud)

如果你不能做出这个假设,那就先测试一下 MemberQ

编辑:信用到TomD建议第二个解决方案中的+1,这消除了使用的需要Append.


Mr.*_*ard 6

这比TakeWhile整数列表快一个数量级.

list /. {x___, 3, ___} :> {x}
Run Code Online (Sandbox Code Playgroud)

要获得该列表通过 3,只是用{x, 3}右手侧.

  • @David它只是给出了第一个匹配,并且默认方法在第一个模式上是最短的.您可以使用`ReplaceList [{1,2,3,4,3,5},{x ___,3,___}:> {x}]来获得所有匹配,或者使用`{1,2,3,4}获得最长匹配,3,5}.{最长[x ___],3,___}:> {x}` (2认同)