[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