Quell-Liste wird verändert - aber warum?
Verfasst: Sonntag 30. Januar 2022, 12:52
Hallo liebe Python Gemeinde,
ich habe mich bei euch angemeldet und schreibe heute meinen ersten Post in euer (nun auch unser ;o) ) Forum.
Ich teste gerade meinen Pythoncode und bin über die Wirkung erstaunt und benötige euren Rat, warum das passiert.
Ich habe als Ausgang eine Liste, welche ich als Quelle nutze
dann habe ich eine Liste, welche ich mit folgendem leere
mit dem folgenden lese ich die Quell-Liste aus und lade was ich haben möchte in die ander _color_table um
hier erhalte ich das richtige ergebnis, aber noch unsortiert
Dann sortiere ich die Liste mit
... und erhalte meine Liste in der sortierten Reihenfolge wie ich sie benötige
Nun kommt der Punkt wo ich es nicht verstehe.
mit den Zeilen ...
füge ich 2 zusätzliche Plätze in die _color_table ein.
Zum besseren Vergleich, habe ich nur einen Punkt hervorgehoben.
a._color_table
[[0, 0, 0, 'white', '3/105'], [1, 0, 0, 'blue', '3/105'], [2, 0, 0, 'green', '3/105'], [3, 0, 0, 'red', '3/105'], [4, 0, 0, 'white', '3/106'], [5, 0, 0, 'blue', '3/106'], [6, 0, 0, 'green', '3/106'], [7, 0, 0, 'red', '3/106'], [8, 0, 0, 'white', '3/116'], [9, 0, 0, 'blue', '3/116'], [10, 0, 0, 'green', '3/116'], [11, 0, 0, 'red', '3/116'], [12, 0, 0, 'white', '3/117'], [13, 0, 0, 'blue', '3/117'], [14, 0, 0, 'green', '3/117'], [15, 0, 0, 'red', '3/117']]
wenn ich aber mir die Quell-Liste anschaue, wurden die entsprechenden Einträge dort auch verändert bzw. hinzugefügt, obwohl ich das nie wollte.
globale_Lichtmodul_Liste
[[[{'raum': 'Ankleide', 'lichtsystem': 'Deckenbeleuchtung', 'lichtmodul_anzahl': 2, 'licht_typ': 'rgbw', 'beschreibung': 'Deckenbeleuchtung Ankleide', 'knotenpunkt': 'DG rechts'}], [0, 3, 1, [[8, 'white', '3/107'], [9, 'blue', '3/107'], [10, 'green', '3/107'], [11, 'red', '3/107']]], [1, 3, 1, [[12, 'white', '3/108'], [13, 'blue', '3/108'], [14, 'green', '3/108'], [15, 'red', '3/108']]]], [[{'raum': 'Schlafzimmer', 'lichtsystem': 'Deckenbeleuchtung', 'lichtmodul_anzahl': 1, 'licht_typ': 'rgbw', 'beschreibung': 'Deckenbeleuchtung Schlafzimmer', 'knotenpunkt': 'DG rechts'}], [0, 4, 1, [[0, 'white', '3/115'], [1, 'blue', '3/115'], [2, 'green', '3/115'], [3, 'red', '3/115']]]], [[{'raum': 'Schlafzimmer', 'lichtsystem': 'Bett rechts', 'lichtmodul_anzahl': 1, 'licht_typ': 'rgbw', 'beschreibung': 'Licht am Bett rechts', 'knotenpunkt': 'DG rechts'}], [0, 4, 1, [[4, 'white', '3/101'], [5, 'blue', '3/101'], [6, 'green', '3/101'], [7, 'red', '3/101']]]], [[{'raum': 'Schlafzimmer', 'lichtsystem': 'Bett links', 'lichtmodul_anzahl': 1, 'licht_typ': 'rgbw', 'beschreibung': 'Licht am Bett links', 'knotenpunkt': 'DG rechts'}], [0, 4, 1, [[8, 'white', '3/102'], [9, 'blue', '3/102'], [10, 'green', '3/102'], [11, 'red', '3/102']]]], [[{'raum': 'Sasuke', 'lichtsystem': 'Deckenbeleuchtung', 'lichtmodul_anzahl': 8, 'licht_typ': 'rgbw', 'beschreibung': 'Deckenbeleuchtung', 'knotenpunkt': 'DG rechts'}], [0, 1, 2, [[8, 0, 0, 'white', '3/116'], [9, 0, 0, 'blue', '3/116'], [10, 0, 0, 'green', '3/116'], [11, 0, 0, 'red', '3/116']]], [1, 1, 2, [[12, 0, 0, 'white', '3/117'], [13, 0, 0, 'blue', '3/117'], [14, 0, 0, 'green', '3/117'], [15, 0, 0, 'red', '3/117']]], [2, 2, 2, [[0, 'white', '3/118'], [1, 'blue', '3/118'], [2, 'green', '3/118'], [3, 'red', '3/118']]], [3, 2, 2, [[4, 'white', '3/119'], [5, 'blue', '3/119'], [6, 'green', '3/119'], [7, 'red', '3/119']]], [4, 2, 2, [[8, 'white', '3/120'], [9, 'blue', '3/120'], [10, 'green', '3/120'], [11, 'red', '3/120']]], [5, 2, 2, [[12, 'white', '3/121'], [13, 'blue', '3/121'], [14, 'green', '3/121'], [15, 'red', '3/121']]], [6, 3, 1, [[0, 'white', '3/122'], [1, 'blue', '3/122'], [2, 'green', '3/122'], [3, 'red', '3/122']]], [7, 3, 1, [[4, 'white', '3/123'], [5, 'blue', '3/123'], [6, 'green', '3/123'], [7, 'red', '3/123']]]], [[{'raum': 'Sasuke', 'lichtsystem': 'Drempelbeleuchtung', 'lichtmodul_anzahl': 2, 'licht_typ': 'rgbw', 'beschreibung': 'Drempelbeleuchtung', 'knotenpunkt': 'DG rechts'}], [0, 1, 2, [[0, 0, 0, 'white', '3/105'], [1, 0, 0, 'blue', '3/105'], [2, 0, 0, 'green', '3/105'], [3, 0, 0, 'red', '3/105']]], [1, 1, 2, [[4, 0, 0, 'white', '3/106'], [5, 0, 0, 'blue', '3/106'], [6, 0, 0, 'green', '3/106'], [7, 0, 0, 'red', '3/106']]]]]
Wie kann das passieren?
Müsste meine Quell-Liste "globale_Lichtmodul_Liste" eigentlich nicht unberührt bleiben? Wo findet die Rückschreibung in die Quell-Liste statt?
VG
Xtremdiver
ich habe mich bei euch angemeldet und schreibe heute meinen ersten Post in euer (nun auch unser ;o) ) Forum.
Ich teste gerade meinen Pythoncode und bin über die Wirkung erstaunt und benötige euren Rat, warum das passiert.
Ich habe als Ausgang eine Liste, welche ich als Quelle nutze
Code: Alles auswählen
globale_Lichtmodul_Liste = [
[
[{'raum':'Ankleide', 'lichtsystem':'Deckenbeleuchtung', 'lichtmodul_anzahl': 2, 'licht_typ': 'rgbw', 'beschreibung': 'Deckenbeleuchtung Ankleide', 'knotenpunkt': 'DG rechts'}],
# Modulindex, Adresse, Powerkanal, [Pin, Farbkanal, Leitungsbeschreibung]
[0,3,1,[
[8, 'white', '3/107'],
[9, 'blue' , '3/107'],
[10, 'green', '3/107'],
[11, 'red' , '3/107']
]
],
[1,3,1,[
[12, 'white', '3/108'],
[13, 'blue' , '3/108'],
[14, 'green', '3/108'],
[15, 'red' , '3/108']
]
]
],
[
[{'raum':'Schlafzimmer', 'lichtsystem':'Deckenbeleuchtung', 'lichtmodul_anzahl': 1, 'licht_typ': 'rgbw', 'beschreibung': 'Deckenbeleuchtung Schlafzimmer', 'knotenpunkt': 'DG rechts'}],
# Modulindex, Adresse, Powerkanal, [Pin, Farbkanal, Leitungsbeschreibung]
[0,4,1,[
[0, 'white', '3/115'],
[1, 'blue' , '3/115'],
[2, 'green', '3/115'],
[3, 'red' , '3/115']
]
]
],
[
[{'raum':'Schlafzimmer', 'lichtsystem':'Bett rechts', 'lichtmodul_anzahl': 1, 'licht_typ': 'rgbw', 'beschreibung': 'Licht am Bett rechts', 'knotenpunkt': 'DG rechts'}],
# Modulindex, Adresse, Powerkanal, [Pin, Farbkanal, Leitungsbeschreibung]
[0,4,1,[
[4, 'white', '3/101'],
[5, 'blue' , '3/101'],
[6, 'green', '3/101'],
[7, 'red' , '3/101']
]
]
],
[
[{'raum':'Schlafzimmer', 'lichtsystem':'Bett links', 'lichtmodul_anzahl': 1, 'licht_typ': 'rgbw', 'beschreibung': 'Licht am Bett links', 'knotenpunkt': 'DG rechts'}],
# Modulindex, Adresse, Powerkanal, [Pin, Farbkanal, Leitungsbeschreibung]
[0,4,1,[
[8, 'white', '3/102'],
[9, 'blue' , '3/102'],
[10, 'green', '3/102'],
[11, 'red' , '3/102']
]
]
],
[
[{'raum':'Sasuke', 'lichtsystem':'Deckenbeleuchtung', 'lichtmodul_anzahl': 8, 'licht_typ': 'rgbw', 'beschreibung': 'Deckenbeleuchtung', 'knotenpunkt': 'DG rechts'}],
# Modulindex, Adresse, Powerkanal, [Pin, Farbkanal, Leitungsbeschreibung]
[0,1,2,[
[8, 'white', '3/116'],
[9, 'blue' , '3/116'],
[10, 'green', '3/116'],
[11, 'red' , '3/116']
]
],
[1,1,2,[
[12, 'white', '3/117'],
[13, 'blue' , '3/117'],
[14, 'green', '3/117'],
[15, 'red' , '3/117']
]
],
[2,2,2,[
[0, 'white', '3/118'],
[1, 'blue' , '3/118'],
[2, 'green', '3/118'],
[3, 'red' , '3/118']
]
],
[3,2,2,[
[4, 'white', '3/119'],
[5, 'blue' , '3/119'],
[6, 'green', '3/119'],
[7, 'red' , '3/119']
]
],
[4,2,2,[
[8, 'white', '3/120'],
[9, 'blue' , '3/120'],
[10, 'green', '3/120'],
[11, 'red' , '3/120']
]
],
[5,2,2,[
[12, 'white', '3/121'],
[13, 'blue' , '3/121'],
[14, 'green', '3/121'],
[15, 'red' , '3/121']
]
],
[6,3,1,[
[0, 'white', '3/122'],
[1, 'blue' , '3/122'],
[2, 'green', '3/122'],
[3, 'red' , '3/122']
]
],
[7,3,1,[
[4, 'white', '3/123'],
[5, 'blue' , '3/123'],
[6, 'green', '3/123'],
[7, 'red' , '3/123']
]
]
],
[
[{'raum':'Sasuke', 'lichtsystem':'Drempelbeleuchtung', 'lichtmodul_anzahl': 2, 'licht_typ': 'rgbw', 'beschreibung': 'Drempelbeleuchtung', 'knotenpunkt': 'DG rechts'}],
# Modulindex, Adresse, Powerkanal, [Pin, Farbkanal, Leitungsbeschreibung]
[0,1,2,[
[0, 'white', '3/105'],
[1, 'blue' , '3/105'],
[2, 'green', '3/105'],
[3, 'red' , '3/105']
]
],
[1,1,2,[
[4, 'white', '3/106'],
[5, 'blue' , '3/106'],
[6, 'green', '3/106'],
[7, 'red' , '3/106']
]
]
]
]
Code: Alles auswählen
a._color_table=[]
Code: Alles auswählen
for lichtsystem in globale_Lichtmodul_Liste:
if this_node_is == lichtsystem[0][0]['knotenpunkt']:
for modulindex in range(1, len(lichtsystem) ):
if lichtsystem[modulindex][1] == 1:
for color in lichtsystem[modulindex][3]:
a._color_table.append(color)
Dann sortiere ich die Liste mit
Code: Alles auswählen
a._color_table = sorted(a._color_table, key=itemgetter(0))
Nun kommt der Punkt wo ich es nicht verstehe.
mit den Zeilen ...
Code: Alles auswählen
for color in a._color_table:
color.insert(1,0)
color.insert(1,0)
Zum besseren Vergleich, habe ich nur einen Punkt hervorgehoben.
a._color_table
[[0, 0, 0, 'white', '3/105'], [1, 0, 0, 'blue', '3/105'], [2, 0, 0, 'green', '3/105'], [3, 0, 0, 'red', '3/105'], [4, 0, 0, 'white', '3/106'], [5, 0, 0, 'blue', '3/106'], [6, 0, 0, 'green', '3/106'], [7, 0, 0, 'red', '3/106'], [8, 0, 0, 'white', '3/116'], [9, 0, 0, 'blue', '3/116'], [10, 0, 0, 'green', '3/116'], [11, 0, 0, 'red', '3/116'], [12, 0, 0, 'white', '3/117'], [13, 0, 0, 'blue', '3/117'], [14, 0, 0, 'green', '3/117'], [15, 0, 0, 'red', '3/117']]
wenn ich aber mir die Quell-Liste anschaue, wurden die entsprechenden Einträge dort auch verändert bzw. hinzugefügt, obwohl ich das nie wollte.
globale_Lichtmodul_Liste
[[[{'raum': 'Ankleide', 'lichtsystem': 'Deckenbeleuchtung', 'lichtmodul_anzahl': 2, 'licht_typ': 'rgbw', 'beschreibung': 'Deckenbeleuchtung Ankleide', 'knotenpunkt': 'DG rechts'}], [0, 3, 1, [[8, 'white', '3/107'], [9, 'blue', '3/107'], [10, 'green', '3/107'], [11, 'red', '3/107']]], [1, 3, 1, [[12, 'white', '3/108'], [13, 'blue', '3/108'], [14, 'green', '3/108'], [15, 'red', '3/108']]]], [[{'raum': 'Schlafzimmer', 'lichtsystem': 'Deckenbeleuchtung', 'lichtmodul_anzahl': 1, 'licht_typ': 'rgbw', 'beschreibung': 'Deckenbeleuchtung Schlafzimmer', 'knotenpunkt': 'DG rechts'}], [0, 4, 1, [[0, 'white', '3/115'], [1, 'blue', '3/115'], [2, 'green', '3/115'], [3, 'red', '3/115']]]], [[{'raum': 'Schlafzimmer', 'lichtsystem': 'Bett rechts', 'lichtmodul_anzahl': 1, 'licht_typ': 'rgbw', 'beschreibung': 'Licht am Bett rechts', 'knotenpunkt': 'DG rechts'}], [0, 4, 1, [[4, 'white', '3/101'], [5, 'blue', '3/101'], [6, 'green', '3/101'], [7, 'red', '3/101']]]], [[{'raum': 'Schlafzimmer', 'lichtsystem': 'Bett links', 'lichtmodul_anzahl': 1, 'licht_typ': 'rgbw', 'beschreibung': 'Licht am Bett links', 'knotenpunkt': 'DG rechts'}], [0, 4, 1, [[8, 'white', '3/102'], [9, 'blue', '3/102'], [10, 'green', '3/102'], [11, 'red', '3/102']]]], [[{'raum': 'Sasuke', 'lichtsystem': 'Deckenbeleuchtung', 'lichtmodul_anzahl': 8, 'licht_typ': 'rgbw', 'beschreibung': 'Deckenbeleuchtung', 'knotenpunkt': 'DG rechts'}], [0, 1, 2, [[8, 0, 0, 'white', '3/116'], [9, 0, 0, 'blue', '3/116'], [10, 0, 0, 'green', '3/116'], [11, 0, 0, 'red', '3/116']]], [1, 1, 2, [[12, 0, 0, 'white', '3/117'], [13, 0, 0, 'blue', '3/117'], [14, 0, 0, 'green', '3/117'], [15, 0, 0, 'red', '3/117']]], [2, 2, 2, [[0, 'white', '3/118'], [1, 'blue', '3/118'], [2, 'green', '3/118'], [3, 'red', '3/118']]], [3, 2, 2, [[4, 'white', '3/119'], [5, 'blue', '3/119'], [6, 'green', '3/119'], [7, 'red', '3/119']]], [4, 2, 2, [[8, 'white', '3/120'], [9, 'blue', '3/120'], [10, 'green', '3/120'], [11, 'red', '3/120']]], [5, 2, 2, [[12, 'white', '3/121'], [13, 'blue', '3/121'], [14, 'green', '3/121'], [15, 'red', '3/121']]], [6, 3, 1, [[0, 'white', '3/122'], [1, 'blue', '3/122'], [2, 'green', '3/122'], [3, 'red', '3/122']]], [7, 3, 1, [[4, 'white', '3/123'], [5, 'blue', '3/123'], [6, 'green', '3/123'], [7, 'red', '3/123']]]], [[{'raum': 'Sasuke', 'lichtsystem': 'Drempelbeleuchtung', 'lichtmodul_anzahl': 2, 'licht_typ': 'rgbw', 'beschreibung': 'Drempelbeleuchtung', 'knotenpunkt': 'DG rechts'}], [0, 1, 2, [[0, 0, 0, 'white', '3/105'], [1, 0, 0, 'blue', '3/105'], [2, 0, 0, 'green', '3/105'], [3, 0, 0, 'red', '3/105']]], [1, 1, 2, [[4, 0, 0, 'white', '3/106'], [5, 0, 0, 'blue', '3/106'], [6, 0, 0, 'green', '3/106'], [7, 0, 0, 'red', '3/106']]]]]
Wie kann das passieren?
Müsste meine Quell-Liste "globale_Lichtmodul_Liste" eigentlich nicht unberührt bleiben? Wo findet die Rückschreibung in die Quell-Liste statt?
VG
Xtremdiver