a trick with lists ?
Steve Holden
steve at holdenweb.com
Thu Feb 7 16:16:07 EST 2008
Diez B. Roggisch wrote:
> "S����������������������������������������������" schrieb:
>> 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 ?
>
> It changes the list in-place. If it has been given to other objects, it
> might require that.
Nowadays it's stylistically better to write
self.tasks = list(tasks)
as it does just the same and makes it a little clearer what's going on
(though of course if tasks *isn't* a list it won't do *exactly* the same.
regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC http://www.holdenweb.com/
More information about the Python-list
mailing list