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

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

Beitragvon PaulM » Dienstag 8. Juli 2008, 17:20

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

Beitragvon Karl » Dienstag 8. Juli 2008, 17:35

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: 2423
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Beitragvon DasIch » Dienstag 8. Juli 2008, 17:37

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

Beitragvon numerix » Dienstag 8. Juli 2008, 17:38

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:

Beitragvon BlackVivi » Dienstag 8. Juli 2008, 17:39

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: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Beitragvon Michael Schneider » Dienstag 8. Juli 2008, 22:58

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

Beitragvon PaulM » Mittwoch 9. Juli 2008, 18:58

.. 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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Mittwoch 9. Juli 2008, 20:35

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
Michael Schneider
User
Beiträge: 567
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Beitragvon Michael Schneider » Mittwoch 9. Juli 2008, 21:05

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 ...

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]