On Monday, August 6, 2012 3:50:13 PM UTC-4, Mok-Kong Shen wrote: > I ran the following code: > > > > def xx(nlist): > > print("begin: ",nlist) > > nlist+=[999] > > print("middle:",nlist) > > nlist=nlist[:-1] > > print("final: ",nlist) > > > > u=[1,2,3,4] > > print(u) > > xx(u) > > print(u) > > > > and obtained the following result: > > > > [1, 2, 3, 4] > > begin: [1, 2, 3, 4] > > middle: [1, 2, 3, 4, 999] > > final: [1, 2, 3, 4] > > [1, 2, 3, 4, 999] > > > > As beginner I couldn't understand why the last line wasn't [1, 2, 3, 4]. > > Could someone kindly help? > > > > M. K. Shen
The list nlist inside of function xx is not the same as the variable u outside of the function: nlist and u refer to two separate list objects. When you modify nlist, you are not modifying u. If you wanted the last line to be [1, 2, 3, 4], you could use the code below: #BEGIN CODE def xx(nlist): print("begin: ",nlist) nlist+=[999] print("middle:",nlist) nlist=nlist[:-1] print("final: ",nlist) return nlist u=[1,2,3,4] print(u) u = xx(u) print(u) #END CODE Notice that I changed two things. First, the function xx(nlist) returns nlist. Secondly, u is reassigned to the result of xx(nlist). -- http://mail.python.org/mailman/listinfo/python-list