2014-07-02 3 views
1

J'ai une fonction qui renvoie des chaînes. Ce que je voudrais faire, c'est obtenir ces chaînes et les enregistrer dans une liste. Comment puis-je faire ceci?Enregistrement de chaînes dans la liste

for i in objects: 
    string = getstring(i) 
    x = 0 
    list[x] = string 
    x = x+1 
+0

Vous attribuez 'string' à' list [0] 'à chaque fois que vous bouclez' for'. Déclarez la liste avant la boucle 'for':' list = list() 'et faites' list.append (string) 'sans aucun x. Mais mieux utiliser les listes de compréhension comme @thefourtheye [suggéré] (http://stackoverflow.com/a/24523762/3240679) – arbulgazar

Répondre

3

Il est préférable d'utiliser une compréhension de la liste dans ce cas,

my_list = [getstring(obj) for obj in objects] 

Au lieu de créer une liste et d'y stocker une chaîne, nous créons une liste de chaînes, basée sur les objets de objects. Vous pouvez faire la même chose avec la fonction map ainsi

my_list = map(getstring, objects) 

Cela prend chaque élément dans objects et applique getstring fonction à leur disposition. Tous les résultats sont rassemblés dans une liste. Si vous utilisez 3.x Python, vous voudrez peut-être faire

my_list = list(map(getstring, objects)) 

Depuis l'utilisation map n'est pas préféré, chaque fois que possible aller avec liste Comprehension. Je cite la BDFL's blog,

Chose curieuse, les map, filter et reduce fonctions qui ont motivé l'introduction à l'origine de lambda et d'autres caractéristiques fonctionnelles ont dans une large mesure été remplacée par la liste et compréhensions expressions du générateur.

+0

Ceci est en effet plus "pythonique" façon de résoudre le cas. – arbulgazar

+0

Dans mon cas, la fonction qui renvoie la chaîne renvoie plusieurs valeurs, dont une est une chaîne. Comment le premier code que vous avez donné peut-il être modifié? – MSK

+0

@MSK Si vous connaissez l'index de l'élément que vous voulez obtenir, vous pouvez simplement faire my_list = [getstring (obj) [1] pour obj dans les objets] ', en supposant que' 1' est l'index des éléments que vous vouloir acquérir. – thefourtheye

2

Vous devez d'abord déclarer la liste:

L = [] 

puis, dans la boucle for, vous pouvez ajouter des articles à elle:

for i in objects: 
    string = getstring(i) 
    L.append(string) 
Questions connexes