Ich suche nach einer effizienten Möglichkeit, einen Zahlenbereich wie (20,24)
mit einem anderen Objekt wie {'a': 'b'}
zu kombinieren,
Wenn ich eine Liste mit Zahlen wie [20, 21, 22, 23]
hätte, würde ich die Liste durchgehen. Aber hier habe ich eine Reihe von Zahlen. Es gibt also eine Möglichkeit, Bereichselemente eleganter in Tupel zu verpacken.
Hier ist mein Versuch, dies zu erreichen:
%Vor%Ich möchte nur wissen, ob es dafür einen besseren Weg gibt.
Tatsächlich kann jede for-Schleife, die an eine leere Liste angehängt wird, in ein Listenverständnis umgewandelt werden.
%Vor%Oder
%Vor%Allerdings ! Beachte, dass du das bekommen hast -
%Vor% Wo dasselbe Objekt mehrmals referenzkopiert wird. Dies ist ein Problem mit veränderbaren Objekten, denn wenn Sie ein Objekt ändern, spiegeln sie alle die Änderung wider. Aus diesem Grund würde ich empfehlen, bei jedem Schritt eine Kopie Ihrer Daten zu erstellen. Sie können entweder die eingebaute Funktion dict.copy
oder eine Funktion aus dem Modul copy
verwenden. Im ersten Fall wird nur eine flache Kopie erstellt. Wenn Sie also eine verschachtelte Struktur haben, ist das keine gute Idee.
Wie auch immer, so würde ich es machen -
%Vor% Wenn Ihr Wörterbuch in der Struktur nicht komplex ist (zum Beispiel - {'a' : {'b' : 'c'}}
), funktioniert die Methode dict.copy
, die ich oben erwähnt habe -
Benutze einfach ein Listenverständnis:
%Vor% Oder Sie können map()
auch hier verwenden:
Hinweis: In Ihrer Version verwenden Sie max
und min
als Variablennamen. Dies ist keine gute Idee, da sie bereits eingebaute Funktionen sind. Verwenden Sie stattdessen andere Variablennamen.
Zusätzlich, wie andere erwähnt haben, ist das Wörterbuch, das Sie wiederholen möchten, dasselbe Objekt im Speicher während aller Tupel. Sie können dieses Problem mit der informativen Antwort von @cᴏʟᴅsᴘᴇᴇᴅ beheben.
Tags und Links python list python-3.x tuples