2009-03-12 9 views

Répondre

10
' '.join(set(foo.split())) 

Notez que split() divisera par défaut tous les espaces. (Par exemple, les onglets, les sauts de lignes, espaces)

Donc, si vous voulez diviser uniquement sur un espace, vous devez utiliser:

' '.join(set(foo.split(' '))) 
+0

'' .join (set (foo.split())) est plus pythonique ces jours-ci. En outre, il vous manque une parenthèse fermante. –

+0

Merci John, j'ai mis à jour ma réponse –

+0

+1 la chose à propos des espaces –

9

Voulez-vous dire?

' '.join(set(someString.split())) 

Ce sont les mots uniques délimités par des espaces, sans ordre particulier.

+0

Et '' .join (set (someString.split())) met +1 de retour ensemble –

+0

+1 mais S.Lott, pourquoi détestes-tu pep8; D? –

+0

@Ali A: 30 ans de codage. 20 ans et + avant PEP 8. Ne peut pas enseigner un vieux pet trix nouveau. –

5
out = [] 
for word in input.split(): 
    if not word in out: 
     out.append(word) 
output_string = " ".join(out) 

Plus long que l'utilisation d'un ensemble, mais il conserve l'ordre.

Édition: Nevermind. J'ai raté le rôle dans la question sur l'ordre n'étant pas important. Utiliser un ensemble est meilleur.

+0

+1, lorsque la commande est importante, votre solution est bien. Pouvez-vous donner une meilleure version qui optimisera la recherche aussi bien. – iammilind

Questions connexes