[Tutor] Please look at my wordFrequency.py

Andrew P grouch at gmail.com
Tue Oct 11 22:06:04 CEST 2005


Just want to add a little something here, because reading over this thread,
I think there may have been some confusion:

Kent wrote:

for e in saveRemovedForLaterL:
L.append(e)
could be
L.extend(e)

I think he might have meant:

for e in saveRemovedForLaterL:
L.append(e)
could be
L.extend(saveRemovedForLaterL)

The difference between these is that one is explicitly looping with Python,
accessing each element of the first list one at a time, appending it to the
other one at a time. Whereas if you call extend() instead, it will be doing
that looping for you with the extend() method, written in C, and very
quickly indeed. I would worry less about what is written in C vs what is
built-in, and does implicit looping for you. Any time you can avoid stepping
over a list one element at a time, is usually the faster way.

>>> lst = [1,2,3,4]
>>> lst2 = [5,6,7,8]
>>> lst.extend(lst2)
>>> print lst
[1, 2, 3, 4, 5, 6, 7, 8]

Compare this to:

>>> lst = [1,2,3,4]
>>> lst2 = [5,6,7,8]
>>> for num in lst2:
... lst.append(num)
>>> print lst
[1, 2, 3, 4, 5, 6, 7, 8]


FWIW, append is generally used to generate a list from something calculated
on the fly:

>>> lst = []
>>> for i in range(10):
... lst.append(i)
...
>>> print lst
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]



> Ah. But how can I know what is in C code and what isn't? For example, in
> a previous post you say that L.extend(e) is in C, and imply that
> L.append(e) isn't, and that therefore L.extend(e) should be used.
>
> Well, back to Hetlands' Beginning Python.
>
> Dick
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20051011/2f1e118c/attachment.html


More information about the Tutor mailing list