[Tutor] List Splicing

Robert Berman bermanrl at cfl.rr.com
Thu Jun 18 02:49:54 CEST 2009


Emille,

Thank you very much for the information on timeit. I will investigate
and use it.

>>... but this isn't what BuildSieve yields:

 >>> BuildSieve(20)
>>[0, 0, 2, 3, 0, 5, 0, 7, 0, 0, 0, 11, 0, 13, 0, 0, 0, 17, 0, 19, 0]

>>So I still don't know what primearray is/does.

If you look at or print all non zero numbers you have the primes between
2 and 20.

Robert


On Wed, 2009-06-17 at 17:30 -0700, Emile van Sebille wrote:

> On 6/17/2009 5:11 PM Robert Berman said...
> > Emille,
> > 
> > Thank you for the example of list splicing.  Do you know if this is  
> > faster than a more conventional loop statement
> 
> Faster can be exactly determined using timeit.  (for some definition of 
> exact -- the one we use mostly around here anyway)
> 
> So, for the bits you want to know faster about, you'd do something like:
> 
>  >>> from timeit import Timer
>  >>> t = Timer("aa = range(0,100,2)")
>  >>> t.timeit()
> 1.6688069739620928
>  >>> t = Timer("aa = range(100)[::2]")
>  >>> t.timeit()
> 3.3360306112492282
>  >>>
> 
> I'm not sure this applies specifically to what you're doing, and 
> crafting what you are timing is important, but read up on timeit and try 
> it out.
> 
> 
> > as in my code for 
> > primearray which is in my original post (reprinted here)
> 
> Well, there's the confusion.  This is the code for something called 
> BuildSieve.  In your prior post you show:
> 
> -----
> Printing a range, say primearray[21]
> through primearray[50] will give you all prime numbers between 21 and
> 50.
> 
> 23
> 29
> 31
> 37
> 41
> 43
> 47
> -----
> 
> ... but this isn't what BuildSieve yields:
> 
>  >>> BuildSieve(20)
> [0, 0, 2, 3, 0, 5, 0, 7, 0, 0, 0, 11, 0, 13, 0, 0, 0, 17, 0, 19, 0]
> 
> So I still don't know what primearray is/does.
> 
> Emile
> 
> > 
> > The code is as follows:
> > 
> > def BuildSieve(itemsin):
> >     TheSieve=list()
> >     TheSieve = range(0,itemsin+1)
> >     TheSieve[1]=0
> >     for i in range(2,itemsin+1):
> >         if (TheSieve[i] > 0):
> >             j = i + i
> >             while (j <= itemsin):
> >                 TheSieve[j] = 0
> >                 j+=i
> >     return TheSieve
> > 
> > It is called with PrimaryList = BuildSieve(1000000)
> > 
> > Again, thank you for your help.
> > 
> > Robert
> > 
> > 
> > On Wed, 2009-06-17 at 17:01 -0700, Emile van Sebille wrote:
> >> On 6/17/2009 4:48 PM Robert Berman said...
> >> > Emile,
> >> > 
> >> > Thank your for your comments. I do have a list running from 0-1000001.
> >> > Yes, it is true, I only needed 0 - 100000 and yes I will change it.
> >> > However, if you use primearray 
> >>
> >> you haven't posted the primearray code...
> >>
> >> <snip>
> >> > 
> >> > However, for the time being, can you perhaps share some suggestions on
> >> > list splicing?
> >>
> >> So, this part of your original post--
> >>  > Out[53]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
> >>  >
> >>  > Since 3 is a prime, we can eliminate all multiples of 3. Within l1,
> >>  > these are expressed as
> >>  >
> >>  > In [52]: l1[n+n:len(l1):n]
> >>  > Out[52]: [6, 9, 12]
> >>  >
> >>  > when n = 3. ( do know 12 would have been eliminated by the prime
> >>  > number 2)
> >>  >
> >>  > It would be great if I could say l1[n+n:len(l1):n] = 0
> >>
> >> but you can say:
> >>
> >> for ii in l1[n+n:len(l1):n]: l1[ii] = 0
> >>
> >> Is something like that what you're after?
> >>
> >> Emile
> >>
> >>
> >>
> >>  > but obviously
> >>  >
> >>  > that will fail for obvious reasons. I am looking for the right hand
> >>  > side of the statement to set a list within the list to all zeros.
> >> ---
> >>
> >> _______________________________________________
> >> Tutor maillist  -  Tutor at python.org <mailto:Tutor at python.org>
> >> http://mail.python.org/mailman/listinfo/tutor
> > 
> > ------------------------------------------------------------------------
> > 
> > _______________________________________________
> > Tutor maillist  -  Tutor at python.org
> > http://mail.python.org/mailman/listinfo/tutor
> 
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> http://mail.python.org/mailman/listinfo/tutor
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20090617/7169e0c0/attachment-0001.htm>


More information about the Tutor mailing list