2014-06-27 2 views
2

Je suis novice en python et j'ai un doute simple.Python Compréhension de liste (convertir une phrase en mots)

J'essaie de comprendre la liste. J'essaie d'ajouter des mots d'une chaîne dans une liste. Mais incapable de le faire. Qu'est-ce que je fais mal?

sentence = "there is nothing much in this" 

wordList = sentence.split(" ") #normal in built function 
print wordList 

wordList = [ x for x in sentence if x!=" "] #using list comprehension 
print wordList 
+2

'sentence.split (» «)' déjà vous donne une liste de mots, donc je ne sais pas s'il y a n'importe quel problème ici. –

+0

je ai décidé de connaître compreshion liste. J'ai essayé de faire la même chose. – abc

Répondre

2

qui suit:

wordList = [ x for x in sentence if x!=" "] #using list comprehension 
print wordList 

ne fonctionnera pas comme prévu.

Liste Les combinaisons de Python sont fondamentalement une forme abrégée d'écriture de boucles normales.

ci-dessus pourrait être écrit comme:

wordList = [] 
for x in sentence: 
    if x != "": 
     wordList.append(x) 

print wordList 

Est-ce que vous voyez pourquoi cela ne fonctionne pas?

Cela aurait en effet pour effet de parcourir tous les caractères de la chaîne sentence.

Tout ce que vous pouvez faire avec une boucle forcée, vous pouvez faire avec une compréhension de liste.

Exemple:

xs = [] 
for i in range(10): 
    if i % 2 == 0: 
     xs.append(i) 

équivaut à:

xs = [i for i in range(10) if i % 2 == 0] 
+2

Je dirais que faire phrase.split() dans la compréhension de la liste est complètement redondant et donc inutile - juste la phrase.split() à elle seule fonctionnera – Ajean

+1

Je suis d'accord avec @Ajean - Ma réponse ici essaie d'illustrer à la OP ** qu'est-ce que ** une compréhension de liste est vraiment et comment modéliser et penser à les écrire. –

Questions connexes