web-dev-qa-db-fra.com

Ajouter des variables au tuple

J'apprends Python et crée une connexion à une base de données. En essayant d’ajouter à la base de données, je songe à créer des n-uplets à partir d’informations, puis à les ajouter à la base de données.

Ce que je fais: Je récupère les informations de l'utilisateur et les stocke dans des variables. Puis-je ajouter ces variables dans un tuple? Pouvez-vous m'aider s'il vous plaît avec la syntaxe?

Aussi, s'il existe un moyen efficace de le faire, veuillez partager ...

EDIT Permettez-moi de modifier cette question un peu ... Je n'ai besoin que du tuple pour entrer des informations dans la base de données. Une fois les informations ajoutées à la base de données, dois-je supprimer le tuple? Je veux dire que je n'ai plus besoin du tuple.

243
amit

Les tuples sont immuables; vous ne pouvez pas changer les variables qu'ils contiennent après la construction. Cependant, vous pouvez les concaténer ou les découper pour former de nouveaux n-uplets:

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

Et, bien sûr, construisez-les à partir des valeurs existantes:

   name = "Joe"
   age = 40
   location = "New York"
   joe = (name, age, location)
314
John Millikin

Vous pouvez commencer avec un tuple vierge avec quelque chose comme t = (). Vous pouvez ajouter avec +, mais vous devez ajouter un autre Tuple. Si vous souhaitez ajouter un seul élément, faites-en un singleton: t = t + (element,). Vous pouvez ajouter un tuple de plusieurs éléments avec ou sans cette virgule.

>>> 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)
205
Daniel

Une autre tactique non encore mentionnée consiste à ajouter des éléments à une liste, puis à convertir cette liste en un tuple à la fin:

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

résultats

(0, 1, 2, 3, 4)

J'utilise parfois cela quand je dois passer un tuple comme argument de fonction, ce qui est souvent nécessaire pour les fonctions numpy.

41
ehontz

Dans Python 3, vous pouvez utiliser * pour créer un nouveau Tuple d'éléments à partir du Tuple d'origine avec le nouvel élément.

>>> Tuple1 = ("foo", "bar")
>>> Tuple2 = (*Tuple1, "baz")
>>> Tuple2
('foo', 'bar', 'baz')
24
Yang Bo

C'est aussi simple que ce qui suit:

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")

Cependant, les tuples de Python sont immuables, vous ne pouvez donc pas ajouter de variables à un tuple une fois celui-ci créé.

7
mipadi

"une fois que les informations sont ajoutées à la base de données, dois-je supprimer le tuple? Je veux dire que je n'ai plus besoin du tuple."

Non.

Généralement, il n'y a aucune raison de supprimer quoi que ce soit. Il existe des cas spéciaux pour la suppression, mais ils sont très, très rares.

Définissez simplement une portée étroite (c'est-à-dire une définition de fonction ou une fonction de méthode dans une classe) et les objets seront ramassés à la fin de la portée.

Ne vous inquiétez pas pour rien supprimer.

[Remarque. J'ai travaillé avec un gars qui - en plus d'essayer de supprimer des objets - écrivait toujours des méthodes de "réinitialisation" pour les effacer. Comme s'il allait les sauver et les réutiliser. Aussi une vanité stupide. Ignorez simplement les objets que vous n'utilisez plus. Si vous définissez vos fonctions dans des blocs de code suffisamment petits, vous n'avez plus rien à penser.]

7
S.Lott

Comme d'autres réponses l'ont noté, vous ne pouvez pas modifier un tuple existant, mais vous pouvez toujours créer un nouveau tuple (qui peut prendre tout ou partie des éléments à partir de n-uplets existants et/ou d'autres sources).

Par exemple, si tous les éléments d’intérêt se trouvent dans des variables scalaires et que vous connaissez leurs noms:

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

à utiliser, par exemple, comme dans cet exemple:

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

bien entendu, ce cas serait plus simplement exprimé par (x, y, z) (ou même renoncerait même à ses noms, (23, 45, 67)), mais l'approche maketuple pourrait être utile dans des cas plus compliqués (par exemple, les noms à utiliser sont également déterminés dynamiquement et ajoutés à une liste lors du calcul).

3
Alex Martelli

Je suis presque sûr que la syntaxe pour ceci dans python est la suivante:

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

une fois défini, les n-uplets ne peuvent plus être changés.

1
Jon W