2009-09-04 15 views
172

Ich lerne Python und erstelle eine Datenbankverbindung. Beim Versuch, der DB hinzuzufügen, denke ich daran, Tupel aus Informationen zu erstellen und sie dann der Datenbank hinzuzufügen.Variablen zu Tuple hinzufügen

Was ich mache: Ich nehme Informationen vom Benutzer und speichern sie in Variablen. Kann ich diese Variablen zu einem Tupel hinzufügen? Kannst du mir bitte bei der Syntax helfen?

Auch wenn es ein effizienter Weg, dies zu tun, bitte teilen ...

EDIT ich diese Frage ein wenig Lassen bearbeiten ... Ich brauche nur die Tupel info in die DB einzugeben. Sobald die Information der Datenbank hinzugefügt wurde, sollte ich das Tupel löschen? Ich meine, ich brauche das Tupel nicht mehr.

Antwort

225

Tupel sind unveränderlich; Sie können nicht ändern, welche Variablen sie nach der Konstruktion enthalten. Allerdings können Sie sie verketten oder in Scheiben schneiden neue Tupel zu bilden:

a = (1, 2, 3) 
b = a + (4, 5, 6) 
c = b[1:] 

Und natürlich, bauen sie aus den vorhandenen Werten:

name = "Joe" 
    age = 40 
    location = "New York" 
    joe = (name, age, location) 
+0

Ich brauche nur diese Tupel zum Hinzufügen zur db nach Benutzereingaben. also sollte ich diese Tupel zerstören, nachdem die Aktualisierung auf die Datenbank abgeschlossen ist? – amit

+5

Sie müssen die Tupel nicht zerstören, nachdem Sie die Datenbank aktualisiert haben. Wenn sie außer Reichweite sind, sollten sie Müll gesammelt werden. –

+0

Um dem Tupel eine Zeichenkette hinzuzufügen, ohne die Zeichenkette zu unterbrechen, https://stackoverflow.com/a/16449189 –

7

Es ist so einfach wie die folgenden:

info_1 = "one piece of info" 
info_2 = "another piece" 
vars = (info_1, info_2) 
# 'vars' is now a tuple with the values ("info_1", "info_2") 

jedoch Tupel in Python sind unveränderlich, so dass Sie keine Variablen zu einem Tupel anhängen können, sobald sie erstellt wird.

1

Ich bin mir ziemlich sicher, dass die Syntax für diese in Python ist:

user_input1 = raw_input("Enter Name: ") 
user_input2 = raw_input("Enter Value: ") 
info = (user_input1, user_input2) 

einmal gesetzt, kann Tupeln nicht geändert werden.

2

Wie andere Antworten haben festgestellt, können Sie nicht eine vorhandene Tupel ändern , Sie können jedoch immer ein neues Tupel erstellen (das einige oder alle Elemente aus vorhandenen Tupeln und/oder anderen Quellen übernehmen kann).

Zum Beispiel, wenn alle Elemente von Interesse in Skalarvariablen sind und Sie kennen die Namen dieser Variablen:

def maketuple(variables, names): 
    return tuple(variables[n] for n in names) 

verwendet werden, beispielsweise wie in diesem Beispiel:

def example(): 
    x = 23 
    y = 45 
    z = 67 
    return maketuple(vars(), 'x y z'.split()) 

natürlich würde dieser eine Fall einfacher ausgedrückt als (x, y, z) (oder sogar die Namen insgesamt, (23, 45, 67)), aber die maketuple Ansatz könnte in einigen komplizierteren Fällen nützlich sein (z. B. wo die Namen zu verwenden sind auch dyna bestimmt und während der Berechnung an eine Liste angehängt werden.

3

"Sobald die Info zur Datenbank hinzugefügt wurde, sollte ich das Tupel löschen? Ich meine, ich brauche das Tupel nicht mehr."

Nr

Im Allgemeinen gibt es keinen Grund, etwas zu löschen. Es gibt einige spezielle Fälle zum Löschen, aber sie sind sehr, sehr selten.

Definieren Sie einfach einen engen Bereich (d. H. Eine Funktionsdefinition oder eine Methodenfunktion in einer Klasse), und die Objekte werden am Ende des Bereichs als Garbage Collected erfasst.

Keine Sorge, etwas zu löschen.

[Hinweis. Ich arbeitete mit einem Typen, der - zusätzlich zu dem Versuch, Objekte zu löschen - immer "Reset" -Methoden schrieb, um sie zu löschen. Als würde er sie retten und wiederverwenden. Auch eine alberne Einbildung. Ignoriere einfach die Objekte, die du nicht mehr benutzt. Wenn Sie Ihre Funktionen in kleinen Blöcken von Code definieren, haben Sie nichts mehr zu denken.]

161

Sie können mit einem leeren Tupel mit etwas wie t =() beginnen. Sie können mit + hinzufügen, aber Sie müssen ein weiteres Tupel hinzufügen. Wenn Sie ein einzelnes Element hinzufügen möchten, machen Sie es zu einem Singleton: t = t + (element,). Sie können ein Tupel aus mehreren Elementen mit oder ohne dieses nachgestellte Komma hinzufügen.

>>> t =() 
>>> t = t + (1,) 
>>> t 
(1,) 
>>> t = t + (2,) 
>>> t 
(1, 2) 
>>> t = t + (3, 4, 5) 
>>> t 
(1, 2, 3, 4, 5) 
>>> t = t + (6, 7, 8,) 
>>> t 
(1, 2, 3, 4, 5, 6, 7, 8) 
+11

In diesem Beispiel kann man auch tun: 't =()' then 't + = (1,) ' –

29

Eine andere Taktik noch nicht zu einer Liste erwähnt wird mit Anhängen, und dann am Ende der Liste zu einem Tupel Umwandlung:

mylist = [] 
for x in range(5): 
    mylist.append(x) 
mytuple = tuple(mylist) 
print mytuple 

kehrt

(0, 1, 2, 3, 4) 

ich dies manchmal verwenden wenn ich ein Tupel als Funktionsargument übergeben muss, was oft für die numpigen Funktionen notwendig ist.

+1

Es ist nützlich zu wissen, dass das Umgekehrte, dh' list (someTuple) 'auch funktioniert. Die beiden Objekttypen sind scheinbar austauschbar – khaverim

+0

Nicht wirklich austauschbar, ich denke, die Umwandlung von Tupel zu Liste wird alle Elemente in der Liste kopieren, also gibt es definitiv Platz, um es zu vermeiden – gbtimmon