wie "neues Tuple" = "altes Tuple" + &qu

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
PaulM
User
Beiträge: 5
Registriert: Montag 16. Juni 2008, 19:28

Hallo,

mal eine kleine Anfänger-Frage zu Tuples

habe hier ein Tuple
t_old: ('x1','x2')
und suche eine Möglichkeit wie ich "anhängen" kann
z.B. 'pp' anhängen, Endresultat soll dann so aussehen
t_new: ('x1','x2','pp')

hab schon einiges probiert, aber nix passendes gefunden

habt ihr eine Idee ?
(PS: es muss wirklich ein Tuple und keine Liste sein, da ich es als
key in einem Dictionary verwenden möchte)

Gruß,
Paule
Karl
User
Beiträge: 252
Registriert: Freitag 29. Juni 2007, 17:49

1 You can't add elements to a tuple. Tuples have no append or extend method.
2 You can't remove elements from a tuple. Tuples have no remove or pop method.
3 You can't find elements in a tuple. Tuples have no index method.
4 You can, however, use in to see if an element exists in the tuple.
Du kannst ein völlig neues Tupel erstellen und die Werte des alten Tupels mit den neuen Werten in dieses speichern.
Ist aber eben einiges umständlicher als bei Listen ;)
Tupel soll man nicht verändern können.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Meinst du sowas?

Code: Alles auswählen

>>> t_old = ('x1', 'x2')
>>> temp_list = []
>>> for element in t_old:
...     temp_list.append(element)
...
>>> temp_list.append('pp')
>>> tuple(temp_list)
('x1', 'x2', 'pp')
>>>
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Code: Alles auswählen

>>> a = 1,2
>>> a
(1, 2)
>>> a = a+(3,)
>>> a
(1, 2, 3)
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Code: Alles auswählen

In [8]: spam = tuple(list((1,2)) + [3])

In [9]: spam
Out[9]: (1, 2, 3)
Wobei man sich über die Performance davon streiten könnte ;P Du solltest zuerst mit einer Liste arbeiten und dann ganz am Ende, wenn du's als Key verwenden willst, in einen Tuple umwandeln.

Edit: Mhm, Tuple kann man auch so zusammenhängen? Was gelernt... naja, würde trotzdem mit Listen arbeiten.
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hallo PaulM,

ich habe noch nicht verstanden, warum man eine Liste (also ein Objekt mit Listenfunktionalität) als Schlüssel in einem Dictionary verwenden wollen könnte. Möchtest Du nur eine Zuordnung der Liste zu einem bestimmten Wert umsetzen? Dann kannst Du auch eine Liste oder ein Dict von Tupels (Liste, Wert) verwenden.
Du kannst Dir auch eine eigene Klasse schreiben, die die Funktionalität einer Sequenz oder Auflistung implementiert.

Wie numerix schrieb kann man Tuples "addieren" (verketten) und ein 1-Tupel besteht aus Klammern mit Wert und Komma -> (1,)

Ein Problem ist immer nur so kompliziert, wie seine Randbedingungen es einschränken. Wie sieht denn die Aufgabe insgesamt aus??

Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
PaulM
User
Beiträge: 5
Registriert: Montag 16. Juni 2008, 19:28

.. juuupi, funktioniert prima ..

mache es genau so wie von euch vorgeschlagen:
- Tuple in Liste konvertieren
- neues Element an Liste anhaengen
- Liste in neues, modifiziertes Tuple zurueckkonvertieren

insbesondere der 3.Schritt, das "tuple(meine_liste)"
was mir neu...

nochmals vielen Dank !
Paule
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

@PaulM: Die Frage ist, warum verwendest du überhaupt tuple und nicht gleich überall eine Liste? Wäre wesentlich einfacher.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hallo PaulM!
PaulM hat geschrieben: mache es genau so wie von euch vorgeschlagen:
- Tuple in Liste konvertieren
- neues Element an Liste anhaengen
- Liste in neues, modifiziertes Tuple zurueckkonvertieren
Warum konvertieren?? WIR haben doch ein einfaches Addieren vorgeschlagen:

Code: Alles auswählen

>>> (1, 2) + (3, )
(1, 2, 3)
Du solltest Dir nur bewusst sein, dass Du dabei (wie auch beim Konvertieren) immer ein neues Tupel erhältst, das Du dann zwangsläufig auch explizit in Dein Dictionary einbauen musst!

Michel
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Antworten