spencer wrote: > first Q.. Why is pop() starting from the back > back of the stack?
Because that is what it does. Try reading the documentation: >>> help(list.pop) Help on method_descriptor: pop(...) L.pop([index]) -> item -- remove and return item at index (default last) > second Q.. Why can't I never empty the stack? Because you are modifying a list while iterating over it which is never a good idea. What you have now pops items from the end of the loop so it stops about half way along. If you change it to pop item 0 then it will shift the items down and your iteration will end up skipping over about half of them. Try something like this: def buildStackMajor(): while dirStackMinor: dirStackMajor.append(dirStackMinor.pop(0)) although in that case you might just as well get rid of the loop entirely: dirStackMajor += dirStackMinor del dirStackMinor[:] -- http://mail.python.org/mailman/listinfo/python-list