2010-11-20 9 views
-2

Python:Comment créer une liste avec une variable "x" en Python?

J'ai une variable disons x. Je dois créer une liste de noms "x"

+1

S'il vous plaît préciser votre question. Vous l'avez déjà fait, un peu plus bas, mais ce que vous voulez n'est pas clair. – BudgieInWA

+2

Compte tenu de votre commentaire à John Machin, je crois qu'il y a une "confusion d'idées" (comme dans la citation de Charles Babbage) ... les objets n'ont pas de noms (certains ont un attribut comme __name__ qui est utilisé pour le débogage fins, les listes ne le font pas). Les variables sont des noms et pointent vers des objets. Mais si vos noms de variables dépendent des valeurs d'exécution, votre code et/ou votre conception est fondamentalement brisé (utilisez un dict pour mapper des chaînes par exemple à des valeurs ou à toute autre collection lorsque cela est plus approprié). – delnan

+0

@delnan, merci delnan.Je vais utiliser dict à la place. – abhishek

Répondre

4

Utilisez un dict.

mylists = {} 

x = 'abhishek' 
mylists[x] = [] 

De cette façon, en mylists vous aurez toutes vos listes. mylists[x] est la liste avec le nom x.

+0

Votre «x» n'est-il pas un nom de la chaîne «abishek»? –

+0

'mylists' ressemble maintenant à ceci:' {'abhishek': []} '.'mylists [x]' est le même que 'mylists ['abhishek']' – BudgieInWA

+0

Désolé, j'ai mal formulé ma question, je veux créer une liste en utilisant la valeur d'une variable. – abhishek

2
x = [None, 0, 1, 42, 666, "Donald Duck", 3.14159, fractions.Fraction(355, 113)] 
+1

Merci pour la réponse. Mais j'ai besoin de créer une liste générique en utilisant une variable 'x' qui est obtenue pendant l'exécution. Par exemple x = 'temp', j'ai besoin de créer une liste de noms 'temp' – abhishek

+0

+1. Cependant, il pourrait être plus utile pour OP si vous fournissiez pi à une plus grande précision. – aaronasterling

+1

@aaronsterling: Je l'ai déjà fait, dans une incarnation précédente: http://en.wikipedia.org/wiki/John_Machin –

0

Voilà comment j'interprété votre question:

def make_list(method): 
    return [method.__name__] 

def x(): 
    pass 

make_list(x) 
# ["x"] 

Bien sûr, vous pouvez également accepter un nombre variable de méthodes et de renvoyer les noms de chacun d'eux dans une liste:

def make_list_of_names(*methods): 
    return [m.__name__ for m in methods] 

make_list(x, str, any_function) 
# ["x", "str", "any_function"] 
+0

Désolé, j'ai mal formulé ma question, je veux créer une liste en utilisant la valeur d'une variable. – abhishek

0
x = 'temp' 
setattr(self,x,[]) 
getattr(self,x) 
# gives [] 
3

Ensuite, faites simplement:

>>> x = 42 
>>> x 
42 
>>> x = [x] 
>>> x 
[42] 
1

Il veut faire une variable sur une corde!
Ceci est mon interprétation de ce que l'OP veut ...

x = 'cat' 
*[insert magical code]* 
cat = [] 

(Je pense que Sudhir est venu le plus proche, à l'exception de l'approche Nosklos intelligente)
est ici une élaboration de peu de Sudhirs.

class NewVariables: 
    pass 
x = "new_variable_name" 
setattr(NewVariables, x, [ ]) 

Tadah!

>>>NewVariables.new_variable_name 
[ ] 
1

Je ne sais pas si vous voulez prendre

x = 'temp' 

et tournez x dans une liste « température » comme son premier élément. C'est ce que j'ai déduit de votre question.

Si vous voulez faire cela, alors ce code tournera x dans une liste contenant « temp »:

>>> x = 'temp' 
>>> x = [] + [x] 
>>> x 
['temp'] 
Questions connexes