En Tue, 15 Apr 2008 20:26:16 -0300, Yves Dorfsman <[EMAIL PROTECTED]> escribió:
> Dan Bishop wrote: > >>>> lines[:] = [line.rstrip('\n') for line in lines] >>> What is the point of the [:] after lines ? How different is it with or >>> without it ? >> >> It causes the result to be stored in the existing list. >> > > If we do: > lines = [line.rstrip('\n') for line in lines] > > lines is now a new list, the old list as no reference to it, and will be > discarded by the gc, right ? So we're not really saving any space here ? > > If we do: > lines[:] = [line.rstrip('\n') for line in lines] > > We reuse an existing list, therefore we are saving the time it takes to > create a new list ? So this is a performance issue ? No. The new list (the right hand side) is created in either case, so there is no difference here. And the name `lines` refers to a list with the new contents in all cases. The difference is on whether *other* references to the original list see the changes or not. For an example, see Dan Bishop's message earlier on this thread. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list