2015-02-27 1 views
2

J'ai une liste qui contient un ou plusieurs éléments:variables Mise à jour automatique

fruits = ['apple', 'orange', 'pear'] #or could be one or many 

Je veux créer des variables en fonction du nombre d'articles: Code:

for i in range(len(fruits)): 
     "Fruit".format(i) = fruits[i] 

Je veux obtenir comme:

Fruit1=apple, Fruit2=orange, Fruit3=pear 

Toute aide comment je peux obtenir cela?

+0

double possible de [Comment pouvez-vous créer dynamiquement des variables en Python via une boucle while?] (Http://stackoverflow.com/questions/5036700/how-can-you-dynamically-create-variables-in -python-via-a-while-loop) – Dannnno

+0

Tout d'abord, votre affectation est à rebours. –

+0

Son affectation n'est pas en retard. Il/elle veut créer plusieurs variables nommées à partir des éléments de la liste. La syntaxe dans la question ne fonctionnera pas, et c'est une mauvaise idée pour commencer, mais c'est pourquoi il/elle a posé la question. – kindall

Répondre

0

Tout d'abord, votre affectation est à rebours. Vous essayez de définir un index de liste dans une chaîne au lieu d'une chaîne dans un index de liste. Sinon, je suggère d'utiliser la fonction enumerate. Ne vous laissez pas tromper par mon formatage, il y a mes moyens de le faire en Python.

for i, j in enumerate(fruits): 
    fruits[i] = "Fruit%d=%s" % (i + 1, j) 
1

En bonne façon pour ces tâches que vous pouvez utiliser un dictionnaire:

>>> fruits = ['apple', 'orange', 'pear'] 
>>> d={"Fruit{}".format(i):j for i,j in enumerate(fruits,1)} 
>>> d 
{'Fruit1': 'apple', 'Fruit2': 'orange', 'Fruit3': 'pear'} 
>>> d['Fruit1'] 
'apple' 

Remarque que si vous utilisez une structure de données comme dictionnaire pour votre problème, vous aurez beaucoup d'avantages comme , que vous pouvez accéder à toutes vos valeurs avec dict.values() et toutes les clés avec dict.keys() aussi il pourrait être plus facile d'interagir avec d'autres structures de données!

>>> d.keys() 
['Fruit1', 'Fruit2', 'Fruit3'] 
>>> d.values() 
['apple', 'orange', 'pear'] 
+0

Je ne pense pas que l'OP avait l'intention d'utiliser un dictionnaire. Je pense qu'il voulait juste une liste avec le nombre de fruits dans la chaîne. –

+0

@MalikBrahimi ouais, je le sais mais c'est un moyen flexible et plus extensible! pour de telles tâches! – Kasramvd

+0

Peut vouloir lancer le paramètre start de '1' à' enumerate' car l'OP semble vouloir une indexation basée sur 1 ... –