Andrew P wrote: > 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)
Right you are, thanks for the catch! Kent > > 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 _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor