jim stockford wrote:
> 
> On Oct 12, 2007, at 11:48 AM, Kent Johnson wrote:
> 
>> If all you want to do is copy the list, then
>>    lstB = lstA[:]
>> is fine, or you can use
>>    lstB = list(lstA)
> 
> why choose one over the other? is there a performance
> or other difference?

The timeit module helps figure out if there is a performance difference. 
  Slicing seems to have a slight edge over a wide range if list sizes:
src $ python -m timeit  -s 'l1=range(1000)' 'l2=list(l1)' 

100000 loops, best of 3: 5.12 usec per loop
src $ python -m timeit  -s 'l1=range(1000)' 'l2=l1[:]'
100000 loops, best of 3: 4.27 usec per loop

src $ python -m timeit  -s 'l1=range(10)' 'l2=list(l1)'
1000000 loops, best of 3: 0.487 usec per loop
src $ python -m timeit  -s 'l1=range(10)' 'l2=l1[:]'
1000000 loops, best of 3: 0.258 usec per loop

src $ python -m timeit  -s 'l1=range(10000)' 'l2=list(l1)'
10000 loops, best of 3: 126 usec per loop
src $ python -m timeit  -s 'l1=range(10000)' 'l2=l1[:]'
10000 loops, best of 3: 108 usec per loop

Other than that I think it is personal preference, whichever you prefer.

Kent
_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to