Mathematica 6 añadido TakeWhile
, que tiene la sintaxis:¿Dónde está DropWhile en Mathematica?
TakeWhile [lista, crit] da elementos e i desde el comienzo de lista, continuando mientras crit [e i] es True.
Sin embargo, no existe la función "DropWhile" correspondiente. Se puede construir DropWhile usando LengthWhile
y Drop
, pero parece casi desaconsejado utilizar DropWhile. ¿Por qué es esto?
Para aclarar, no estoy pidiendo una forma de implementar esta función. Más bien: ¿por qué no está ya presente? Me parece que debe haber una razón para su ausencia que no sea un descuido, o ya habría sido corregido. ¿Hay algo ineficiente, indeseable o superfluo sobre DropWhile?
Parece que hay cierta ambigüedad acerca de la función de DropWhile, por lo que aquí es un ejemplo:
DropWhile = Drop[#, LengthWhile[#, #2]] &;
DropWhile[{1,2,3,4,5}, # <= 3 &]
Out= {4, 5}
Sobre la "ambigüedad". Esta es solo una ambigüedad de lenguaje de la palabra "while". Deberíamos seguir el significado estándar de "while" utilizado en funciones como 'While' en * Mathematica *. Entonces su problema podría reescribirse como 'list = {1, 2, 3, 4, 5}; Mientras [list [[1]] <= 3, list = Drop [list, 1]]; lista'. No hay ninguna ambigüedad como puedo ver. –
@Alexey, mi edición fue en respuesta a una respuesta que sugería un método que no estaba de acuerdo con la definición anterior. Desde entonces ha sido eliminado. –