[Python-de] inplace vs binary add

Dieter Neubauer neubauer at lni.de
Mon Okt 18 12:53:24 CEST 2004


Muß da mal nachkart'ln:

>>> Ich bin auf ein etwas seltsames Verhalten bei verschachtelten Listen
>>> gestossen. inplace und binary add liefern da unterschiedliche
>>> Ergebnisse.
>>>
>>>   >>> liste = [[]] * 5
>>>   >>> liste
>>>
>>>   [[], [], [], [], []]
>>
>> Dies ist eine Liste in der eine andere Listeninstanz fünfmal
>> eingefügt ist.
>>
>>>>> for i in liste: print id(i)
>> ...
>> 1075780236
>> 1075780236
>> 1075780236
>> 1075780236
>> 1075780236
>>
>> Und damit ist klar, daß die Änderung an einem Element sofort an allen
>> sichtbar ist.

Ist mir grad' auch (wieder!!) passiert!
Deshalb die ganz einfache Frage: gibt's einen *einfachen* Weg die liste
'richtig'  zu initialisieren?
Also einfacher als mit:

liste = [ [] for i in range(5) ]

Gruß,
Dieter