On 18/07/2008, Christopher Spears <[EMAIL PROTECTED]> wrote: > How come the stack doesn't shrink when I pop off the last value? I tested > the code in the interpreter: > > >>> lista = [1,2,3,4] > >>> lista[:len(lista)-1] > [1, 2, 3] > >>> lista = lista[:len(lista)-1] > >>> lista > [1, 2, 3]
First, a tip: Instead of lista[:len(lista)-1], you can (and should) just write lista[:-1]. Now, what if we wrap that in a function: >>> def shorten(lst): ... lst = lst[:-1] # identical to: lst = lst[:len(lst)-1] ... Then test it: >>> lista = [1, 2, 3, 4] >>> shorten(lista) What do you think will be the result of: >>> print lista ? PS. You wrote: > def stackpop(self): > length = len(self) > if length == 0: > print "Empty list!" If you're trying to pop from an empty stack, this is an error condition. Rather than printing a message, the correct way to handle errors in python is by raising exceptions. e.g. def stackpop(self): if len(self) == 0: raise IndexError # or you could define your own exception... > def peek(self): > length = len(self) > if length == 0: > return 0 The same applies here -- peeking at an empty stack should be an error too. Otherwise, how can you tell the difference between an empty stack and a stack where the top item happens to be a 0? -- John. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor