Re: case of inconsistent API between Drop and Part?
- To: mathgroup at smc.vnet.net
- Subject: [mg127131] Re: case of inconsistent API between Drop and Part?
- From: Bob Hanlon <hanlonr357 at gmail.com>
- Date: Mon, 2 Jul 2012 05:23:14 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201206300917.FAA01642@smc.vnet.net>
To drop elements 2 and 4 in one command: lis = {a, b, c, d, e}; Drop[lis, {2, 4, 2}] {a, c, e} Bob Hanlon On Sat, Jun 30, 2012 at 5:17 AM, Nasser M. Abbasi <nma at 12000.org> wrote: > One thing I always liked about Mathematica's functions is > that the API's of its functions all seem to be consistent > (for the most part). > > Here is a case where it is not consistent though to share it. > > (I am trying to make a list of all such cases in my cheat sheet) > > It is between Drop and Part. > > Drop[list,{m,n}] gives list with elements m THROUGH n dropped. > Drop[list,m;;n] gives list with elements m THROUGH n dropped. > > but > > Part[list,{m,n}] gives the list of elements m AND n > Part[list,m;;n] gives the list of elements m THROUGH n > > Example using Drop: > ----------------- > Clear[a,b,c,d,e]; > lis={a,b,c,d,e}; > Drop[lis,2;;4] > > Out[161]= {a,e} > > Drop[lis,{2,4}] > > Out[162]= {a,e} > ---------------------- > > Example using Part: > ------------------ > Part[lis,2;;4] > > Out[163]= {b,c,d} > > Part[lis,{2,4}] > > Out[164]= {b,d} > -------------------- > > What the above also mean, is that using the Drop function, > there is no direct way to tell it to Drop element 2 AND > element 4 in one command. (there are easy ways to do this, > but not using one function call of Drop as is). (one easy > solution is to complement the elements to drop, and use Part > instead, and other ways) > > I do not know if the experts here agree that this is an > inconsistency in the API between Drop and Part, but for me, > (and I am no expert) it seems so. > > http://reference.wolfram.com/mathematica/ref/Part.html > http://reference.wolfram.com/mathematica/ref/Drop.html > --Nasser > -- Bob Hanlon