MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: case of inconsistent API between Drop and Part?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg127183] Re: case of inconsistent API between Drop and Part?
  • From: Jason Ebaugh <ebaughjason at gmail.com>
  • Date: Wed, 4 Jul 2012 03:34:19 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <201206300917.FAA01642@smc.vnet.net> <CAEtRDSekECNrpgxeX+MMY9_m8Le6V6F+2BAow=BOqtuSdM+TiQ@mail.gmail.com>

> Use one call to Drop to remove only elements
> 
>        2,3,7,11, and 12
> 
> from
> 
> lis={q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m}


This will do the trick:

list = {q, w, e, r, t, y, u, i, o, p, a, s, d, f, g, h, j, k, l, z, x, c, v, b, n, m};

ElementsToRemove = {2, 3, 7, 11, 12};
ElementsToRemove = Table[Rule[element, Null], {element, ElementsToRemove}]

Out[]= {2 -> Null, 3 -> Null, 7 -> Null, 11 -> Null, 12 -> Null}


DeleteCases[ReplacePart[list, ElementsToRemove], Null]

Out[]= {q, r, t, y, i, o, p, d, f, g, h, j, k, l, z, x, c, v, b, n, m}


The above can be put together into one function:

DropElements[list_, elementstoremove_] := 
 DeleteCases[
  ReplacePart[list, 
   Table[Rule[element, Null], {element, elementstoremove}]], Null]


newlist = CharacterRange["a", "z"]

Out[]= {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", \
"m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"}


NewElementsToRemove = {1, 4, 5, 9, 10, 11, 13, 20, 25};


DropElements[newlist, NewElementsToRemove]

Out[]= {"b", "c", "f", "g", "h", "l", "n", "o", "p", "q", "r", "s", "u", "v", "w", "x", "z"}



Using the Null intermediate is a bit sloppy. But this will at least get you going in the right direction to make a more solid version. 



Jason Ebaugh



  • Prev by Date: Creating a Scatter Plot with Labeled Points
  • Next by Date: Re: Solid modeling using Manipulate
  • Previous by thread: Re: case of inconsistent API between Drop and Part?
  • Next by thread: Re: how to make a list of rules with 2 other lists composed by different kinds of elements