Mathematica中的DropWhile在哪里?

时间:2011-04-07 08:15:45

标签: wolfram-mathematica

Mathematica 6添加了TakeWhile,其语法为:

  

TakeWhile [ list crit ]   从 list 的开头给出元素 e i ,只要 crit [e i < / sub>]是真的。

但是没有相应的“DropWhile”功能。可以使用LengthWhileDrop构建DropWhile,但似乎不鼓励使用DropWhile。这是为什么?

为了澄清,我不是要求一种方法来实现这个功能。相反:它为什么不存在?在我看来,除了监督之外,必须有理由让它缺席,否则现在就会纠正。 DropWhile有什么低效,不合需要或多余的东西吗?


DropWhile的功能似乎有些含糊不清,所以这里有一个例子:

DropWhile = Drop[#, LengthWhile[#, #2]] &;

DropWhile[{1,2,3,4,5}, # <= 3 &]
Out= {4, 5}

2 个答案:

答案 0 :(得分:7)

只是一个盲目的猜测。

有很多列表操作可以采用标准。例如:

Total..While  
Accumulate..While  
Mean..While  
Map..While  
Etc..While

无论如何,它们并不难构建。

我认为这些不包括在内只是因为“原始”功能的数量已经增长太长,并且标准“它是否经常需要并且难以实现并且用户具有良好的性能?”在那些情况下很普遍。

答案 1 :(得分:3)

Mathematica中无处不在的列表是固定长度的向量,当它们是机器号时,它是一个打包的数组。

因此,递归定义的链表(例如Lisp或Haskell)的自然函数不是Mathematica中的主要工具。

所以我倾向于认为这解释了为什么Wolfram没有填写其操作函数的全部内容。