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