Mathematica 6添加了TakeWhile
,其语法为:
TakeWhile [ list , crit ] 从 list 的开头给出元素 e i ,只要 crit [e i < / sub>]是真的。
但是没有相应的“DropWhile”功能。可以使用LengthWhile
和Drop
构建DropWhile,但似乎不鼓励使用DropWhile。这是为什么?
为了澄清,我不是要求一种方法来实现这个功能。相反:它为什么不存在?在我看来,除了监督之外,必须有理由让它缺席,否则现在就会纠正。 DropWhile有什么低效,不合需要或多余的东西吗?
DropWhile的功能似乎有些含糊不清,所以这里有一个例子:
DropWhile = Drop[#, LengthWhile[#, #2]] &;
DropWhile[{1,2,3,4,5}, # <= 3 &]
Out= {4, 5}
答案 0 :(得分:7)
只是一个盲目的猜测。
有很多列表操作可以采用而标准。例如:
Total..While
Accumulate..While
Mean..While
Map..While
Etc..While
无论如何,它们并不难构建。
我认为这些不包括在内只是因为“原始”功能的数量已经增长太长,并且标准“它是否经常需要并且难以实现并且用户具有良好的性能?”在那些情况下很普遍。
答案 1 :(得分:3)
Mathematica中无处不在的列表是固定长度的向量,当它们是机器号时,它是一个打包的数组。
因此,递归定义的链表(例如Lisp或Haskell)的自然函数不是Mathematica中的主要工具。
所以我倾向于认为这解释了为什么Wolfram没有填写其操作函数的全部内容。