Quell-Liste wird verändert - aber warum?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Xtremdiver
User
Beiträge: 16
Registriert: Samstag 22. Januar 2022, 09:21

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

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']
             ]
        ]
    ]
]
dann habe ich eine Liste, welche ich mit folgendem leere

Code: Alles auswählen

a._color_table=[]
mit dem folgenden lese ich die Quell-Liste aus und lade was ich haben möchte in die ander _color_table um

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)
hier erhalte ich das richtige ergebnis, aber noch unsortiert
Dann sortiere ich die Liste mit

Code: Alles auswählen

a._color_table = sorted(a._color_table, key=itemgetter(0))
... 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 ...

Code: Alles auswählen

for color in a._color_table:
	color.insert(1,0)
	color.insert(1,0)
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
nezzcarth
User
Beiträge: 1765
Registriert: Samstag 16. April 2011, 12:47

Python unterscheidet zwischen veränderlichen und nicht-veränderlichen Datentypen. Listen sind veränderlich (mutable). Wenn du eine Liste an eine andere hängst etc., ist das eine Referenz auf das Original, keine Kopie. Daher werden auch alle Änderungen übertragen. Deine Beispiele kann ich leider nicht ausprobieren, weil da nicht definierte Name vorkommen, aber ich vermute, das könnte das Problem sein. Dieses Verhalten kannst du leicht im interaktiven Python-Interpreter mit der Funktion 'id' ausprobieren. Um "echte" Kopien zu erzeugen, gibt es in der Standardbibliothek das Modul copy. Auf mich wirkt das, was du da machst, aber ein bisschen so, als würdest du objektorientierte Programmierung simulieren, ohne Klassen zu verwenden.
Xtremdiver
User
Beiträge: 16
Registriert: Samstag 22. Januar 2022, 09:21

Hi,

ich habe den Code aus meiner IDE heraus kopiert und Ja ich habe Klassen gebaut. Das sollte aber nicht vom eigentlichen Problem ablenken, darum habe ich den Fokus nur auf die betreffenden Zeilen gelegt.

Mir ist klar wenn ich in Python Objekte umlade mit '=' dann "verlinke ich nur diese.
Nun habe ich aber die Funktion append verwendet und wollte nur einen Teil aus der Quell-Liste heraus extrahieren. Somit bin ich nicht davon ausgegangen, dass ein umladen von einem Objekt ins andere Objekt geschehen würde.

id(globale_Lichtmodul_Liste)
53913640

id(a._color_table)
1864104

Daher frage ich mich, wie kann eine Operation auf der Liste a._color_table einen Einfluss auf die Quell-Liste haben?
Xtremdiver
User
Beiträge: 16
Registriert: Samstag 22. Januar 2022, 09:21

Eine Ergänzung, wenn ich die Einträge mit einander vergleiche, dann sind diese identisch.

>>> globale_Lichtmodul_Liste[5][1][3][0]
[0, 0, 0, 'white', '3/105']

>>> a._color_table[0]
[0, 0, 0, 'white', '3/105']

>>> id(globale_Lichtmodul_Liste[5][1][3][0])
53912904

>>> id(a._color_table[0])
53912904

Fazit: die List-Funktion append verknüpft also auch nur die Inhalte :(
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Dein Datendesign ist schlecht. Alle Elemente einer Liste sollten die selbe Bedeutung haben, das erste Element in der zweiten Ebene hat aber eine andere Bedeutung als die restlichen Elemente. Außerdem ist das Wörterbuch aus irgend einem unerfindlichen Grund nochmal in einer Liste verpackt.
Da Du eh schon ein Wörterbuch hast, sollten die Module auch dort als Liste drinstehen.
Der Modulindex scheint immer nur die Position in der Liste wiedergeben, kann also weg.
Ebenso ist `lichtmodul_anzahl` überflüssig, da es nur die Länger der Modul-Liste ist.
Konstanten schreibt man komplett GROSS, alle Variablennamen dagegen komplett klein:

Code: Alles auswählen

LICHTSYSTEME = [
    {
        'raum':'Ankleide',
        'lichtsystem':'Deckenbeleuchtung',
        'licht_typ': 'rgbw',
        'beschreibung': 'Deckenbeleuchtung Ankleide',
        'knotenpunkt': 'DG rechts',
        'module': [
            # Adresse, Powerkanal, [Pin, Farbkanal, Leitungsbeschreibung]
            [3,1,[
                [8,  'white', '3/107'],
                [9,  'blue' , '3/107'],
                [10, 'green', '3/107'],
                [11, 'red'  , '3/107']
            ]],
            [3,1,[
                [12, 'white', '3/108'],
                [13, 'blue' , '3/108'],
                [14, 'green', '3/108'],
                [15, 'red'  , '3/108']
            ]]
        ]
    }, {
        'raum':'Schlafzimmer',
        'lichtsystem':'Deckenbeleuchtung',
        'licht_typ': 'rgbw',
        'beschreibung': 'Deckenbeleuchtung Schlafzimmer',
        'knotenpunkt': 'DG rechts',
        'module': [
            # Adresse, Powerkanal, [Pin, Farbkanal, Leitungsbeschreibung]
            [4,1,[
                [0, 'white', '3/115'],
                [1, 'blue' , '3/115'],
                [2, 'green', '3/115'],
                [3, 'red'  , '3/115']
            ]]
        ]
    }, {
        'raum':'Schlafzimmer',
        'lichtsystem':'Bett rechts',
        'licht_typ': 'rgbw',
        'beschreibung': 'Licht am Bett rechts',
        'knotenpunkt': 'DG rechts',
        'module': [
            # Adresse, Powerkanal, [Pin, Farbkanal, Leitungsbeschreibung]
            [4,1,[
                [4,  'white', '3/101'],
                [5,  'blue' , '3/101'],
                [6,  'green', '3/101'],
                [7,  'red'  , '3/101']
            ]]
        ]
    }
]
Eingerückt wird immer mit 4 Leerzeichen pro Ebene, keine Tabs.
Über einen Index iteriert man nicht, weil man direkt über die Elemente iterieren kann.
Was ist `a`? Woher kommt das?

Mit den Änderungen vereinfacht sich die Abfrage zu:

Code: Alles auswählen

color_table = []
for lichtsystem in LICHTSYSTEME:
    if this_node_is == lichtsystem['knotenpunkt']:
        for address, powerkanal, colors in lichtsystem['module']:
            if address == 1:
                color_table.extend(colors)
Warum möchtest Du mitten drin in einer Datenstruktur Werte einfügen? Das verschlechter schon das schlechte Design noch mehr, denn nun haben nicht nur feste Positionen in einer Liste unterschiedliche Bedeutungen, die Positionen verschieben sich auch noch.
Ein Grundsatz in Python ist, keine Datenstrukturen zu verändern, sondern bei Bedarf neue anzulegen:

Code: Alles auswählen

modified_color_table = []
for pin, farbkanal, leitungsbeschreibung in color_table:
    modified_color_table.append((pin, 0, 0, farbkanal, leitungsbeschreibung))
Besser ist es aber, nicht mit Indexbasierten Datenstrukturen zu arbeiten, sondern mit solchen, die den einzelnen Elementen Namen zuordnen (Wörterbuch, Namedtuple, Dataclasses, etc.)
Xtremdiver
User
Beiträge: 16
Registriert: Samstag 22. Januar 2022, 09:21

Hi Sirius3,

vielen Dank für die konstruktiven Einwände. Ich prüfe deine Vorschläge gleich, vielen Dank.
Eingerückt wird immer mit 4 Leerzeichen pro Ebene, keine Tabs.
-> Ist kopierfehler aus der IDE. Im Texteditor sind es standardmäßig 4 Leerzeichen :wink:
Über einen Index iteriert man nicht, weil man direkt über die Elemente iterieren kann.
-> Ich habe bisher auf Mikrokontrollerebene in C geschrieben. Aber ich finde das iterieren über mehr als die Indizies toll - dank deiner Hilfe habe ich wieder was dazu gelernt.
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Xtremdiver: Sind es im Editor Tabs die in Viererschritten angezeigt werden oder tatsächlich vier Leerzeichen? Das ist ein Unterschied und in Python sind vier echte Leerzeichen pro Ebene Konvention. Unter anderem weil vier Leerzeichen immer als vier Leerzeichen angezeigt werden — wie Tabs in den unterschiedlichen Umgebungen (Editoren, IDEs, Webbrowser, Terminal, E-Mail, …) angezeigt werden, hängt von den Einstellungen ab, und einige Umgebungen bieten noch nicht einmal Einstellungen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Xtremdiver
User
Beiträge: 16
Registriert: Samstag 22. Januar 2022, 09:21

auch mit der Anpassung von den hier genannten Vorschläge habe ich das gleiche Problem weiterhin bestehen.

>>> LICHTSYSTEME[5]['module'][0][2][0]
[0, 'white', '3/105']
>>> color_table[8]
[0, 'white', '3/105']

>>> id(LICHTSYSTEME[5]['module'][0][2][0])
1816552
>>> id(color_table[8])
1816552

Das bedeutet, das auch 'color_table.extend(colors)' nur eine Verknüpfung herstellt (siehe id).
Nun ist die Quell-Liste 'LICHTSYSTEME' eine allgemeine Liste und die color_table ist eine Liste, welche in einer Klasse eines bestimmten Moduls liegt.
In die color_table wurde mit 2 mal 'color.insert(1, 0)' 2 Einträge hinzugefügt, da ich 2 weitere Infos speichern möchte - Farbwert und Enable.
Also LICHTSYSTEME ist ungleich color_table. Aber LICHTSYSTEME hat Grundlegende Information welche in der color_table benötigt werden.

Grundlegendes Experiement:
>>> a=1
>>> b=a
>>> id(a)
1393289136
>>> id(b)
1393289136
>>> a+=1
>>> a
2
>>> b
1
>>> id(a)
1393289152
>>> id(b)
1393289136

Wie kann man also einen Teil aus einer bestehenden Liste heraus "kopieren" und in eine andere Liste einfügen ohne das es zu einer Verknüpfung kommt?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Wurde doch schon gesagt, sprichwoertlich mit dem Modul "copy" - fuer kopieren.
Xtremdiver
User
Beiträge: 16
Registriert: Samstag 22. Januar 2022, 09:21

Den Hinweis mit dem Modul "copy" habe ich auch gelesen und auf der Webseite https://www.python-kurs.eu/deep_copy.php dazu mir den Beitrag dazu durchgelesen.

In den Beispielen wurden aber immer nur ganze Listen kopiert und ich hatte mit dem Begriff deep copy auch so meine Schwierigkeiten.

Als abschließende Info für alle die mal auch so ein ähnliches Problem haben sollten ist hier die Lösung:

Code: Alles auswählen

from copy import deepcopy

color_table=[]
for lichtsystem in LICHTSYSTEME:
    if this_node_is == lichtsystem['knotenpunkt']:
        for address, powerkanal, colors in lichtsystem['module']:
            if address == 1:
                color_table.extend(deepcopy(colors))
                
in der IDE gibt es dazu folgende Ausgabe
>>> color_table[8]
[0, 'white', '3/105']
>>> LICHTSYSTEME[5]['module'][0][2][0]
[0, 'white', '3/105']
>>> id(color_table[8])
53957032
>>> id(LICHTSYSTEME[5]['module'][0][2][0])
1816552

Vielen Dank hier nochmal für die Optimierungstipps des Pythoncodes.
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Nein, `copy` ist nur die zweitbeste Lösung. Wie ich es Dir schon gezeigt habe, erzeugt man einfach neue Datenstrukturen, und ändert nicht bestehende.
Also nochmal der Code, damit das auch klar wird:

Code: Alles auswählen

modified_color_table = []
for pin, farbkanal, leitungsbeschreibung in color_table:
    modified_color_table.append((pin, 0, 0, farbkanal, leitungsbeschreibung))
Copy braucht man in ordentlichen Programmen so gut wie nie!
Xtremdiver
User
Beiträge: 16
Registriert: Samstag 22. Januar 2022, 09:21

ah okay, also gibt es 2 Lösungen und hier nun die Lösung #1 (nach Aussage von Sirius3 8) ) angepasst an meinen Fall. Vielen Dank noch mal für eure Unterstützung.

Code: Alles auswählen

color_table=[]

for lichtsystem in LICHTSYSTEME:
    if this_node_is == lichtsystem['knotenpunkt']:
        for address, powerkanal, colors in lichtsystem['module']:
            if address == 1:
                for pin, farbkanal, leitungsbeschreibung in colors:
                    color_table.append((pin, 0, 0, farbkanal, leitungsbeschreibung))
>>> LICHTSYSTEME[5]['module'][0][2][0]
[0, 'white', '3/105']
>>> color_table[8]
(0, 0, 0, 'white', '3/105')
>>> id(LICHTSYSTEME[5]['module'][0][2][0])
1816552
>>> id(color_table[8])
1831432
Antworten