si j'ai une liste, dites:
ll = ['xx','yy','zz']
et je veux assigner chaque élément de cette liste à une variable séparée:
var1 = xx
var2 = yy
var3 = zz
sans savoir combien de temps la liste est longue, comment pourrais-je le faire? J'ai essayé:
max = len(ll)
count = 0
for ii in ll:
varcount = ii
count += 1
if count == max:
break
Je sais que varcount n'est pas un moyen valide de créer une variable dynamique, mais ce que j'essaie de faire, c'est de créer var0, var1, var2, var3, etc., en fonction du nombre.
Merci!
MODIFIER:
nVM je devrais commencer une nouvelle question. Merci pour l'aide en tout cas!
en règle générale, il est suggéré not d'utiliser ce type de programmation pour un grand nombre d'éléments/variables de liste.
Cependant, la déclaration suivante fonctionne bien et comme prévu
a,b,c = [1,2,3]
Ceci s'appelle la "déstructuration".
cela pourrait vous faire économiser des lignes de code dans certains cas, par exemple. J'ai un, b, c comme nombres entiers et veux leurs valeurs de chaîne comme sa, sb, sc:
sa, sb,sc = [str(e) for e in [a,b,c]]
ou encore mieux
sa, sb,sc = map(str, (a,b,c) )
Ce n'est pas une bonne idée de le faire; Que ferez-vous avec les variables après les avoir définies?
Mais si vous avez une bonne raison, voici comment le faire en python:
for n, val in enumerate(ll):
globals()["var%d"%n] = val
print var2 # etc.
Ici, globals()
est l’espace de noms local présenté sous forme de dictionnaire. La numérotation commence à zéro, comme les index de tableau, mais vous pouvez indiquer à enumerate()
de commencer à 1.
Mais encore une fois: il est peu probable que cela vous soit réellement utile.
Vous devriez revenir en arrière et repenser pourquoi vous "avez besoin" de variables dynamiques. Il est fort probable que vous puissiez créer la même fonctionnalité en parcourant la liste en boucle ou en la découpant en morceaux.
Si le nombre d'éléments ne change pas, vous pouvez convertir la liste en chaîne et la scinder en variables.
wedges = ["Panther", "ALi", 0, 360]
a,b,c,d = str(wedges).split()
print a,b,c,d
Je suppose que vous obtenez la liste au moyen d'une requête SQL - pourquoi vous ne pouvez pas vous engager sur une longueur. Avec cela, il me semble évident que vous souhaitez utiliser ces valeurs et exécuter des commandes SQL supplémentaires en utilisant chaque valeur séparément de la liste nouvellement acquise. Ce n'est pas un moyen de sortir du concept si vous le prenez d'un point de vue SQL, et si je suis correct, je fournirai la syntaxe. Cependant, vous n'aurez pas besoin de créer des noms de variable séparés avec cette solution et de ne pas perdre la polyvalence que vous recherchez. SI JE SUIS MAUVAIS DÉSOLÉ DE perdre votre temps
Au lieu de cela, faites ceci:
>>> var = ['xx','yy','zz']
>>> var[0]
'xx'
>>> var[1]
'yy'
>>> var[2]
'zz'