On Feb 7, 12:20 pm, "Sébastien Vincent" <sebastien_nimp73<@>free.fr> wrote: > I've found some class on the Net which takes basically this form : > > ###### > class Foo: > def __init__(self): > self.tasks = [] > ... > > def method1(self): > tasks = [] > while True: > ... > append/pop elements into/from tasks > ... > if condition : break > > self.tasks[:] = tasks > return > ###### > > What I do not fully understand is the line "self.tasks[:] = tasks". Why does > the guy who coded this did not write it as "self.tasks = tasks"? What is the > use of the "[:]" trick ?
if you do a = [1,2,3] b = [] b = a then assign: b[1] = 9 now a[1] == 9 as well with a[:] = b you are actually getting a copy of the list rather than an alias it's hard to say if this is needed in the case you described without context, but that's what the a[:] = b idiom does -James -- http://mail.python.org/mailman/listinfo/python-list