2010-10-04 4 views
-3
dbH = [] 
string = ("%s/t%s/t%s/t%s") % (i1, i2, i3, i4) 

originally, 
i1 = blah 
i2 = doubleblah 
i3 = tripleblah 
i4 = 0 

... 

Comment puis-je remplacer la valeur dans i4 plus tard? ex. en ce moment dbH [1] = ("Adam \ tJack \ tJill \ tNULL") plus tard dbH [1] = ("Adam \ tJack \ tJill \ tJohn")Remplacement d'éléments dans une matrice

+0

Que voulez-vous dire par «tableau original»? – JoshD

+3

Votre question est source de confusion. Qu'avez-vous essayé? Qu'attendiez-vous en tant que sortie? Qu'avez-vous eu comme sortie? –

+0

Le fait de mettre du non-code dans un code ne nous aide pas à comprendre ce que vous avez réellement essayé. Votre exemple ne compile pas; dbH n'est pas référencé, vous semblez confondre \ t et/t, et ainsi de suite. Si vous voulez que la chaîne change par magie quand i4 change, vous devez définir une fonction qui prend i1, i2, i3, i4 et retourne une chaîne, et vous y référer à la place de la chaîne. –

Répondre

2
(i1, i2, i3, i4) 

est un tuple et donc immuable par définition, il ne peut donc pas être changé.

Utilisez une liste:

mylist = [i1, i2, i3, i4] 

puis faire

mystring = "%s/t%s/t%s/t%s" % tuple(mylist) 

Ensuite, vous pouvez changer mylist[3] à tout ce que vous voulez et refaire l'étape précédente.

+0

Merci pour l'explication approfondie – user428370

+0

apparemment vous êtes un esprit-lecteur. – LarsH

0

si i4 réattribution: une chaîne = ("% s/t% s/t% s/t% s")% (i1, i2, i3, i4) dbH [1] = newVal

0

Voulez-vous dire comment récupérer i1, i2, i3 et i4 une fois qu'ils sont dans la chaîne?

(i1, i2, i3, i4) = string.split("\t") 
1

Pour gérer ce bien, vous avez 2 options:
1. Utilisez

TEMPLATE = "%s/t%s/t%s/t%s" 

puis recréer la chaîne quand vous en avez besoin par:

string = TEMPLATE % your_tuple 


2. Créez une fonction qui renverra la chaîne la plus à jour en fonction de l'i4 actuel. Utilisez-le dans votre code au lieu d'appeler directement "chaîne".

Questions connexes