Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

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

Search the Archive

Re: reducing the time of constructing a List

  • To: mathgroup at smc.vnet.net
  • Subject: [mg57601] Re: reducing the time of constructing a List
  • From: Bill Rowe <readnewsciv at earthlink.net>
  • Date: Wed, 1 Jun 2005 06:04:52 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

On 5/31/05 at 5:00 AM, marloo3 at mail15.com wrote:

>please, what is the best way to reduce the timing of the following
>lines, the source of data is: 

>dat = Table[Random[Integer, {0, 10}], {100000}];

>and the purpose is to construct the List lst in the following way: 

>For[i = 1, i <= 100000,
>      If [dat[[i]] == 1,
>        lst = Join[lst, {1}], lst = Join[lst, {0}]]; i++]; // Timing

A couple of comments. First, on my system using this code results in a recursion error message and will not produce any usable output.

Second, generally the best way to improve execution speed in code like this is to eliminate the For loop, replacing it with functional programming constructs and pattern matching.

As I understand this code, you want a list the same length as the original list having a 1 where ever the original list has a 1 and a zero everywhere else. If I have this correct, the following will do what you want and should run much faster

lst = (#1 == 1 & ) /@ dat /. {True -> 1, False -> 0}
--
To reply via email subtract one hundred and four


  • Prev by Date: Re: reducing the time of constructing a List
  • Next by Date: Re: Two related question. Question 1
  • Previous by thread: Re: reducing the time of constructing a List
  • Next by thread: computing the area inside a contour plot