Re: Delete elements from list..
- To: mathgroup at smc.vnet.net
- Subject: [mg116624] Re: Delete elements from list..
- From: Daniel Lichtblau <danl at wolfram.com>
- Date: Tue, 22 Feb 2011 04:41:59 -0500 (EST)
Below assumes entries are machine size integers in order to use Compile. Variations might be used to handle different sets.
In[62]:= deleteLessersC = Compile[{{ll, _Integer, 1}},
Module[{max = First[ll] - 1},
Pick[ll, Map[If[# > max, max = #; 1, 0] &, ll], 1]]];
In[63]:= deleteLessersC[mylist]
Out[63]= {1, 2, 3, 4, 5, 6, 7, 8, 9}
In[64]:= biglist = RandomInteger[10^6, 10^6];
Timing[rising = deleteLessersC[biglist];]
Out[65]= {0.3439999999999999, Null}
Daniel Lichtblau
Wolfram Research
----- Original Message -----
> From: "Maarten van der Burgt" <Maarten.VanDerBurgt at kla-tencor.com>
> To: mathgroup at smc.vnet.net
> Sent: Monday, February 21, 2011 6:30:31 PM
> Subject: [mg116616] Delete elements from list..
> Hallo,
>
> I have a list like:
>
> mylist = {1, 2, 3, 4, 5, 6, 4, 5, 7, 8, 9}
>
> I want to delete any element which is not strictly larger than the
> previous element, until my new list has only increasing values.
>
> This means in mylist above I want to delete the 4 and the 5 at
> position
> 7 and 8.
>
> Any elegant and fast way for doing this?
>
> In practice I want to do this for a large amount (1000) of very large
> lists (1000). So speed is important.
>
> Thanks for your help.
>
> Maarten