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
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor