copy.copy()
und copy.deepcopy()
kopieren Sie einfach die Referenz für ein unveränderliches Objekt wie ein Tupel. Wie kann ich eine Kopie des ersten unveränderlichen Objekts an einem anderen Speicherort erstellen?Wie kann ich ein unveränderliches Objekt wie Tupel in Python kopieren?
Antwort
das leere Tupel es hinzufügen:
>>> a = (1, 2, 3)
>>> a is a+tuple()
False
verketten Tupel immer eine neue eindeutige Tupel zurück, auch wenn das Ergebnis gleich herausstellt.
Das klingt eher nach einem Implementierungsdetail als nach einer Garantie. –
@DietrichEpp das ist wahr genug, und realistisch 'tuple (liste (a))' ist ebenfalls (seit nichts stoppt 'tuple .__ new__', sagen wir, schwache References zu allen Tupeln, die es bereits erstellt hat). Es gibt wahrscheinlich * keine * absolut garantierte Möglichkeit, zwei verschiedene, aber gleiche Tupel zu haben, wenn sie nur unveränderliche Elemente enthalten. – lvc
Interessant. – wim
Sie suchen nach deepcopy
.
from copy import deepcopy
tup = (1, 2, 3, 4, 5)
put = deepcopy(tup)
Zugegeben, die ID dieser beiden Tupel wird auf die gleiche Adresse zeigen. Da ein Tupel unveränderlich ist, gibt es wirklich keinen Grund, eine weitere Kopie derselben zu erstellen. Beachten Sie jedoch, dass Tupel veränderbare Elemente sie enthalten können, und deep/id verhält sich wie Sie erwarten, es würde:
from copy import deepcopy
tup = (1, 2, [])
put = deepcopy(tup)
tup[2].append('hello')
print tup # (1, 2, ['hello'])
print put # (1, 2, [])
Ids sind die gleichen für den ersten Fall, und anders für den zweiten Fall sind Tupel gut gestaltet! –
versuchen Sie dies:
tup = (1,2,3)
nt = tuple(list(tup))
Und ich denke, das Hinzufügen eines leeren Tupel ist viel besser .
Hinzufügen eines leeren Tupel ist viel besser. –
Was meinst du mit "Und ich denke"? – Mike
Und ich denke, das Hinzufügen eines leeren Tupel ist viel besser. –
- 1. Wie kann ich ein NetStream-Objekt kopieren?
- 2. Python - Wie ein Tupel
- 3. Wie Tupel in Zeichenfolge in Tupel-Objekt konvertieren?
- 4. Wie kann ich einfach ein vorhandenes Realm-Objekt duplizieren/kopieren
- 5. Wie man ein Tupel in Python flacht
- 6. Wie erstelle ich ein Tupel eines leeren Tupels in Python?
- 7. Code-Beispiel dafür, wie ein Veränderliche Unterklasse-Objekt kann Problem verursachen, wenn unveränderliches Objekt erwartet wird
- 8. Wie kann ich eine Python-Zeichenfolge kopieren?
- 9. Wie schaue ich in ein Python-Objekt?
- 10. Kann ich in Python ein benanntes Tupel mit typename definieren?
- 11. Wie ändert man ein Tupel in ein Array in Python?
- 12. Wie kann ich ein animiertes Objekt in Python verfolgen?
- 13. Scala „update“ unveränderliches Objekt Best Practices
- 14. Kann ich ein PhotoImage auf Python kopieren?
- 15. Iterieren während unveränderliches Objekt in Scala Konstruktion
- 16. Wie Tupel in Python spalten
- 17. Wie kann ich ein Objekt in ein generisches Objekt umwandeln?
- 18. coffeescript wie entpacken wie "Tupel" in Python
- 19. Groovy unveränderliches Objekt mit Elternklasse
- 20. fusionieren ein Tupel in Python
- 21. Python MemoryError - wie kann ich Objekt löschen
- 22. Python Tupel und Listen. Ein Tupel, die
- 23. Objekt in ein anderes kopieren
- 24. Filtern Sie ein Tupel mit einem anderen Tupel in Python
- 25. Wie kann ich Tupel mit LINQ füllen?
- 26. C# -Tupel zurückgeben - wie Python
- 27. Wie verwende ich 'issubset' mit mehreren Elementen in Tupel (Python)
- 28. Wie kann ich ein View-Objekt wiederverwenden?
- 29. NCSFDictionary, Muting-Methode an unveränderliches Objekt gesendet
- 30. Wie konvertiert man ein benutzerdefiniertes Klassenobjekt in ein Tupel in Python?
'oldtuple [:]' oder 'newtuple = tuple (oldtuple)' – Eevee
warum müssen Sie es trotzdem kopieren, wenn es unveränderlich ist, dann sind Sie sicher, dass eine Referenz nicht gut genug ist? – wim
@wim Wahr. Ich habe erwartet, dass jemand das fragt. Aber gibt es noch einen Weg? –